【问题标题】:Add an XML node to multiple parent nodes(which have same name)将 XML 节点添加到多个父节点(具有相同名称)
【发布时间】:2018-09-25 17:34:24
【问题描述】:

我正在尝试将 XML 节点添加到多个父节点(具有相同名称)。但它只是添加到 XML 的 Last 节点,而不是全部。

输入 XML

<Record>
 <Emp>
  <ID>12</ID>
  <Name>ABC</Name>
 </Emp>
 <Emp>
  <ID>12</ID>
  <Name>ABC</Name>
 </Emp>
</Record>

我想将 Location 元素添加到每个 Emp 节点。我的代码如下:

XmlNodeList xNodeList = doc.SelectNodes("/Record/Emp");
XmlElement xNewChild = doc.CreateElement("Location");
        xNewChild.InnerText = "USA";
        foreach (XmlNode item in xNodeList)
        {
            item.AppendChild(xNewChild);
        }
doc.Save(path);

但我得到这样的输出:

 <Record>
 <Emp>
  <ID>12</ID>
  <Name>ABC</Name>
 </Emp>
 <Emp>
  <ID>12</ID>
  <Name>ABC</Name>
  <Location>USA</Location>
 </Emp>
</Record>

Location 元素尚未添加到第一个 Emp 节点。

注意:经过调试,我发现即使是第一个 Emp 节点也已经添加了元素。但是,在保存的 XML 文件中,我看到了这种奇怪的行为。

【问题讨论】:

    标签: c# .net xml


    【解决方案1】:

    您的xNewChild 是一个新元素。简单地将其添加到多个节点只会序列化到最后一个节点。像这样的改变应该有效:

    XmlNodeList xNodeList = doc.SelectNodes("/Record/Emp");
    foreach (XmlNode item in xNodeList)
    {
      XmlElement xNewChild = doc.CreateElement("Location");
      xNewChild.InnerText = "USA";
      item.AppendChild(xNewChild);
    }
    doc.Save(path);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多