使用基于multipart xml根声明的名称空间前缀创建元素

时间:2013-03-08 18:05:16

标签: c# xml xml-namespaces prefix

如果我这样做:

System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
XmlElement e = xmlDoc.CreateElement("ShipmentReceiptNotification");
e.SetAttribute("xmlns", "urn:rosettanet:specification:interchange:ShipmentReceiptNotification:xsd:schema:02.02");
e.SetAttribute("xmlns:ssdh", "urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03");
XmlNode ShipmentReceiptNotification0Node = e;

ShipmentReceiptNotification0Node.InnerText = String.Empty;
xmlDoc.AppendChild(ShipmentReceiptNotification0Node);
XmlNode DocumentHeader1Node = xmlDoc.CreateElement("ssdh:DocumentHeader");
ShipmentReceiptNotification0Node.AppendChild(DocumentHeader1Node);

这将导致第二个节点ssdh的前缀不显示,仅显示DocumentHeader。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要像这样创建:

XmlNode DocumentHeader1Node = xmlDoc.CreateElement("ssdh", "DocumentHeader", "urn:rosettanet:specification:domain:Procurement:AccountClassification:xsd:codelist:01.03");

要点XmlDocument需要知道哪个名称空间前缀(第一个参数)对应哪个名称空间URI(第三个参数)。有点反直觉,但这是它的工作方式。

另请注意,ShipmentReceiptNotification0Node.InnerText = String.Empty;行无用;省略它是安全的,默认情况下该元素为空