如何将架构位置属性添加到 XML 文档

本文关键字:添加 XML 文档 属性 位置 | 更新日期: 2023-09-27 17:56:24

请查看以下 XML 命名空间和 schemaLocation。

<agr:ABWInvoice 
  xsi:schemaLocation = "
    http://services.agresso.com/schema/ABWInvoice/2011/11/14 
    http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:agrlib = "http://services.agresso.com/schema/ABWSchemaLib/2011/11/14"
  xmlns:agr = "http://services.agresso.com/schema/ABWInvoice/2011/11/14"
>
</agr:ABWInvoice>

我通过以下方式添加了命名空间,这似乎工作正常:

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ns.Add("agrlib", "http://services.agresso.com/schema/ABWSchemaLib/2011/11/14");
ns.Add("agr", "http://services.agresso.com/schema/ABWInvoice/2011/11/14");

但是,如何添加以下架构位置?有什么想法吗?

xsi:schemaLocation="http://services.agresso.com/schema/ABWInvoice/2011/11/14 http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd"

如何将架构位置属性添加到 XML 文档

xsi:schemaLocation="..."

不是命名空间声明:它是一个属性(其值恰好是一个命名空间,但不要介意)。 因此,您将使用设置属性值的方法添加它。 我不熟悉 C# XML API,但它可能是这样的:

XmlElement.SetAttributeValue (localname, prefix, namespace, value)

localname应为 "schemaLocation"
prefix = "xsi"
namespace = "http://www.w3.org/2001/XMLSchema-instance"
value = "your schema location"

迈克的回答让我得到了以下答案:

    [XmlAttributeAttribute("schemaLocation", AttributeName = "schemaLocation", 
    Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
    public string SchemaLocation = "http://services.agresso.com/schema/ABWInvoice/2011/11/14 http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd";

只需在类中添加此代码即可

公共分部类 MyClass{

    [XmlAttribute(Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)]
    public string schemaLocation = "http://www.adap.cx/m3/x4 lksdjv45.xsd";

。}

对我来说,接受的答案不起作用,但这确实有效:

    var schema = new XmlSchema();
    schema.Namespaces.Add("xmlns", "urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2");
    var doc = new XmlDocument();
    doc.Schemas.Add(schema);
    var rootElement = doc.CreateElement("MyRoot");
    rootElement.SetAttribute("xmlns", "urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2");
    rootElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    rootElement.SetAttribute("schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", "urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2 file:///C:/DIGITALCAB/DigiTaxi/schema/OIOUBL/maindoc/UBL-OrderResponse-2.0.xsd");