【问题标题】:Adding child nodes to a node in XML using Linq To excel使用Linq To excel将子节点添加到XML中的节点
【发布时间】:2014-03-30 09:57:38
【问题描述】:

以下是我的 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 的新手,我无法弄清楚。

谁能帮助我理解这一点并取得积极的结果。

我们将不胜感激。

感谢和问候。

【问题讨论】:

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


    【解决方案1】:

    您可以尝试使用 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")); 
    

    *) 我假设&lt;Id&gt; 元素是根节点的直接子节点。

    【讨论】:

    • 您好,感谢您这么快回答,但显示错误
    • 它现在可以工作了,但是没有这样的节点被添加到xml中
    • 添加完元素后你保存xDoc了吗?
    • 哦是的我忘了
    • 它创建了一个新元素,但我的整个文件都被覆盖了,你能帮忙解决一下吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多