【问题标题】:Formatting XML with XmlDocument使用 XmlDocument 格式化 XML
【发布时间】:2014-12-12 18:42:28
【问题描述】:

我正在尝试使用 XmlDocument 创建一个 XML 文件,然后将其传递给 API。大多数数据输出正确,但是无论我尝试什么,都有一个元素不能正确输出。

这是我当前的输出

<agentInventoryReference xmlns="demo.org.uk/demo/AgentInventoryReference"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<agentInventoryIdentity xmlns="">
<shed xmlns="demo.org.uk/demom/AgentInventoryIdentifier">TAX</shed> 
<arrivalPort xmlns="demo.org.uk/demo/AgentInventoryIdentifier">LHR</arrivalPort> 
<masterAirwayBillPrefix xmlns="demo.org.uk/demo/AgentInventoryIdentifier">125</masterAirwayBillPrefix> 
<masterAirwayBillNumber xmlns="demo.org.uk/demo/AgentInventoryIdentifier">12345678</masterAirwayBillNumber> 
<nominatedAgent xmlns="demo.org.uk/demo/AgentInventoryIdentifier">DRB</nominatedAgent> 
</agentInventoryIdentity>

我需要在打开的 agentInventoryIdentity 元素的末尾删除 xmlns=""。

我的代码如下所示:

 XmlDocument generateInventoryXml = new XmlDocument();
 XmlElement root = generateInventoryXml.CreateElement  ("agentInventoryReference", "demo.org.uk/demo/AgentInventoryReference");
        root.SetAttribute("xmlns", "demo.org.uk/demo/AgentInventoryReference");
        root.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
        generateInventoryXml.AppendChild(root);

        XmlElement agentInventoryIdentity = generateInventoryXml.CreateElement("agentInventoryIdentity");

        XmlElement shed = generateInventoryXml.CreateElement("shed", "demo.org.uk/Sequoia/AgentInventoryIdentifier");
        XmlElement arrivalport = generateInventoryXml.CreateElement("arrivalPort", "demo.org.uk/demo/AgentInventoryIdentifier");
        XmlElement masterAirwayBillPrefix = generateInventoryXml.CreateElement("masterAirwayBillPrefix","demo.org.uk/demo/AgentInventoryIdentifier");
        XmlElement masterAirwayBillNumber = generateInventoryXml.CreateElement("masterAirwayBillNumber", "demo.org.uk/demo/AgentInventoryIdentifier");
        XmlElement nominatedAgent = generateInventoryXml.CreateElement("nominatedAgent", "demo.org.uk/demo/AgentInventoryIdentifier");

        shed.InnerText = shedCode;
        arrivalport.InnerText = arrivalPort;
        masterAirwayBillPrefix.InnerText = awbPrefix;
        masterAirwayBillNumber.InnerText = awbNumber;
        nominatedAgent.InnerText = agent;

        agentInventoryIdentity.AppendChild(shed);
        agentInventoryIdentity.AppendChild(arrivalport);
        agentInventoryIdentity.AppendChild(masterAirwayBillPrefix);
        agentInventoryIdentity.AppendChild(masterAirwayBillNumber);
        agentInventoryIdentity.AppendChild(nominatedAgent);

        generateInventoryXml.DocumentElement.AppendChild(agentInventoryIdentity);

        GenerateInventoryXml = generateInventoryXml.InnerXml;

【问题讨论】:

  • 您想从 XDocument 中删除 xmlns 吗?
  • 仅来自 元素
  • 您的标题是 XDocument,但您的代码使用的是 XmlDocument - 更改您的标题。

标签: c# xml linq-to-xml


【解决方案1】:

试试这个:

XmlElement agentInventoryIdentity = generateInventoryXml.CreateElement("agentInventoryIdentity",generateInventoryXml.DocumentElement.NamespaceURI);`

或者

XmlElement agentInventoryIdentity = generateInventoryXml.CreateElement("agentInventoryIdentity","demo.org.uk/demo/AgentInventoryReference");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2013-08-28
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多