如何将架构位置属性添加到 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"
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");