4

我正在尝试将 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 文件中,我看到了这种奇怪的行为。

4

1 回答 1

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);
于 2012-10-22T20:35:56.120 回答