2012-10-22 198 views
4

我正在嘗試將XML節點添加到多個父節點(它們具有相同的名稱)。但它只是添加到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> 

該位置的元素尚未被添加到第一的Emp節點。

注意:調試完成後,我能夠發現即使對於第一個Emp節點也添加了該元素。但是,在保存的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); 
+0

謝謝...這工作... – SKJ

相關問題