使用Linq以XML格式将节点添加到节点中

时间:2014-02-27 06:22:53

标签: c# linq xml-parsing linq-to-xml

以下是我的XML

的结构
<Id>
 <Sid> 123 </Sid>
 <Name> Xyz </Name>
 <Name> Abc </Name>
</Id>
<Id>
 <Sid> 789 </Sid>
 <Name> Xyz </Name>
 <Name> Abc </Name>
</Id>

我只想输入一个新的子节点,即任何名称为Sid = 789的节点的名称。

我已经尝试过这段代码,但它没有用。

XElement xe = xDoc.Elements().Where(r => (string)r.Element("Sid") == "789").FirstOrDefault();

            xe.Add(new XElement("Name", "Hello")); 

由于我是Linq和Excel的新手,我无法弄明白。

任何人都可以帮助我理解这一点,并取得积极成果。

各种帮助将不胜感激。

谢谢和问候。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用XPath查询表达式来选择具有复杂条件的元素:

using System.Xml.XPath;

........
........
XElement xe = xDoc.XPathSelectElement("//Id[Sid=123]");
xe.Add(new XElement("Name", "Hello")); 

或没有XPath *

XElement xe = xDoc.Root.Elements()
                    .Where(r => (string)r.Element("Sid") == "789")
                    .FirstOrDefault();
xe.Add(new XElement("Name", "Hello")); 

*)我假设<Id>元素是根节点的直接子元素。