加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将XML节点添加到多个父节点(具有相同名称)

发布时间:2020-12-15 21:41:35 所属栏目:百科 来源:网络整理
导读:我试图将 XML节点添加到多个父节点(具有相同的名称).但它只是添加到XML的Last节点而不是全部. 输入XML Record Emp ID12/ID NameABC/Name /Emp Emp ID12/ID NameABC/Name /Emp/Record 我想将Location元素添加到每个Emp节点.我的代码如下: XmlNodeList xNodeL
我试图将 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文件中,我看到了这种奇怪的行为.

解决方法

您的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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读