我们如何使用LINQ使用新值更新节点名称?
<test xmlns="http://www.mydomain.com/test/xyz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<Ribbon1>test</Ribbon1>
<Ribbon2>test</Ribbon2>
</test>
我正在尝试如下:
var query = from lst in XElement.Load(fileLoc).Elements(ns + "Ribbon1")
select lst.FirstNode ;
以下代码现在正在运作:
XNamespace ns = @"http://www.mydomain.com/test/xyz";
XElement xElement = XElement.Load(fileLoc);
foreach (XElement descendant in xElement.Descendants(ns + "Ribbon1"))
descendant.Value = "Borra";
xElement.Save(fileLoc);
答案 0 :(得分:2)
您的代码使用Elemnts
并且仅查看给定级别。要找到任意级别的东西:
//XElement.Load(fileLoc).Elements(ns + "Ribbon1")
XElement.Load(fileLoc).Descendants(ns + "Ribbon1")
或坚持结构:
XElement.Load(fileLoc).Element(ns + "test").Elements(ns + "Ribbon1")
注意Element()和Elements()
答案 1 :(得分:1)
XNamespace ns = @"http://www.mydomain.com/test/xyz";
XElement xElement = XElement.Load(fileLoc);
foreach (XElement descendant in xElement.Descendants(ns + "Ribbon1"))
descendant.Value = "Borra";
xElement.Save(fileLoc);