c# - xml 根目录中的多个命名空间

标签 c# xml namespaces

我在生成 xml 根时遇到问题。我必须匹配此结构,因为 xml 的元素始终使用前缀。

<ShipmentReceiptNotification
xmlns="urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02"
xmlns:dacc="urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03"
xmlns:dbpq="urn:rosettanet:specification:domain:Procurement:BookPriceQualifier:xsd:codelist:01.04"
xmlns:dccc="urn:rosettanet:specification:domain:Procurement:CreditCardClassification:xsd:codelist:01.03"
xmlns:dcrt="urn:rosettanet:specification:domain:Procurement:CustomerType:xsd:codelist:01.03"
..\..\XML\Interchange\ShipmentReceiptNotification_02_02.xsd">

如果我做类似的事情
XmlNode ShipmentReceiptNotification0Node = xmlDoc.CreateElement("ShipmentReceiptNotification", "xmlns=\"urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02\"xmlns:dacc=\"urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03\"");

我得到

-ShipmentReceiptNotification xmlns="xmlns="urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02"xmlns:dacc=&

quot;urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03"">

最佳答案

CreateElement的第二个参数接受正在创建的元素的命名空间的 URI,即 ShipmentReceiptNotification , 属于。不是一大堆xmlns属性。这段代码:

XmlElement e = xmlDoc.CreateElement(
    "ShipmentReceiptNotification",
    "urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02");

生成此 XML:
<ShipmentReceiptNotification 
    xmlns="urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02" />

要生成您想要的内容,您需要向元素添加属性。像这样:
XmlElement e = xmlDoc.CreateElement("ShipmentReceiptNotification");
e.SetAttribute("xmlns", "urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02");
e.SetAttribute("xmlns:dacc", "urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03");

生成此 XML:
<ShipmentReceiptNotification 
    xmlns="urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02" 
    xmlns:dacc="urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03" />

请注意,这是“手动”方式。你应该玩 XmlNamespaceManager 做到“正确”。但是,这可能是一个更复杂的任务,对于您的场景来说不是必需的。

关于c# - xml 根目录中的多个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15299418/

相关文章:

c# - 如何更改文本框背景颜色?

c# - 在 DataGrid 中显示数据行列表

r - 如何从 Excel 中提取 URL 并使用 R 将它们与其显示的文本匹配?

c# - 如何在 C# 中模拟来自 httpclient 的响应,Azure 函数,如何测试

java - EditText 自动建议为空白或不存在

java - 如何解析 XML 以从中返回 Map?

c++ - 了解运算符查找;哪个编译器是正确的?

web-services - Axis2 Web 服务 namespace 前缀转换

python - python __all__ 模块级变量有什么用?

c# - 错误CS0201-无法理解我的代码出了什么问题