我正在尝试将 XML 节点添加到多个父节点(具有相同名称)。但它只是添加到 XML 的最后一个节点,而不是全部。
输入 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 文件中,我看到了这种奇怪的行为。
Your 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)