Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更新XDocument中元素的所有实例?_C#_Linq_Linq To Xml - Fatal编程技术网

C# 如何更新XDocument中元素的所有实例?

C# 如何更新XDocument中元素的所有实例?,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我有如下xml结构。如何替换此结构中无处不在的元素值?有没有一种方法可以使用Linq实现这一点?此外,有时结构可能不同,但总会有资源元素,所以我需要查看资源的所有实例,而不关心它在哪里 谢谢你的建议 <Users> <User> <Number>123456</Number> <ID>1</ID> <Events> <Event&g

我有如下xml结构。如何替换此结构中无处不在的元素值?有没有一种方法可以使用Linq实现这一点?此外,有时结构可能不同,但总会有资源元素,所以我需要查看资源的所有实例,而不关心它在哪里

谢谢你的建议

<Users>
    <User>
        <Number>123456</Number>
        <ID>1</ID>
        <Events>
          <Event>
            <ID>12</ID>
          </Event>
        </Events>
        <Items>
          <Item>
            <ID>12</ID>
            <Resource>Replace this value</Resource>
          </Item>
          <Item>
            <ID>13</ID>
            <Resource>Replace this value</Resource>
          </Item>
          <Item>
            <ID>14</ID>
            <Resource>Replace this value</Resource>
          </Item>
        </Items>
    </User>

    //More User elements where Resource needs to be updated
    <User>
    </User>

    <User>
    </User>
</Users>

123456
1.
12
12
替换此值
13
替换此值
14
替换此值
//需要更新资源的更多用户元素

Linq是一种查询语言,因此您不能直接使用它来修改值,但您可以使用它轻松地选择文档中的所有
资源
元素并迭代/更改它们

例如:

// or load from xml, however you have it
var xDoc = XDocument.Load(@"c:\temp\myxml.xml"); 
// iterate every Resource element
foreach (XElement element in xDoc.Descendants("Resource"))            
    element.Value = "Hello, world";        

这将挑选出XML中的每个
资源
元素,而不管它在层次结构中的什么位置,在您的情况下,这就是您所需要的。如果需要更具体地针对它,可以使用XPath表达式或进一步的Linq调用,例如
Element()
,它们在层次结构的单个级别上工作。

如何更新它们?对于每个用户?它们都是相同的值吗?取决于另一个值?