root中的xml多个名称空间

时间:2013-03-08 17:03:37

标签: 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 =” 瓮:RosettaNet的:规格:交换:ShipmentReceiptNotification:XSD:模式:02.02" 的xmlns:DACC =安培;

     

QUOT;瓮:RosettaNet的:规格:域:采购:AccountClassification:XSD:编码表:01.03 “” &GT;

1 个答案:

答案 0 :(得分:1)

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来“正确”执行此操作。但是,这可能是一个更复杂的任务,对于您的方案而言并不是必需的。