如何更新 XDocument 中元素的所有实例?
How to update all instances of an element in XDocument?
我有 xml 结构如下。如何替换此结构中随处可见的元素值?有没有办法使用 Linq 来做到这一点?此外,有时结构可能不同,但总会有 Resource 元素,因此我需要查看 Resource 的所有实例而不关心它存在的位置。
感谢您的任何建议。
<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>
Linq是一种查询语言,所以你不能直接用它来修改值,但是你可以很容易地select文档中的所有Resource
元素用它和iterate/change他们。
例如:
// 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 中的每个 Resource
元素,而不管它在层次结构中的什么位置,在您的情况下,这就是您所需要的。如果您需要更具体地定位它,您可以使用 XPath 表达式或进一步的 Linq 调用,例如在层次结构的单个级别上工作的 Element()
。
我有 xml 结构如下。如何替换此结构中随处可见的元素值?有没有办法使用 Linq 来做到这一点?此外,有时结构可能不同,但总会有 Resource 元素,因此我需要查看 Resource 的所有实例而不关心它存在的位置。
感谢您的任何建议。
<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>
Linq是一种查询语言,所以你不能直接用它来修改值,但是你可以很容易地select文档中的所有Resource
元素用它和iterate/change他们。
例如:
// 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 中的每个 Resource
元素,而不管它在层次结构中的什么位置,在您的情况下,这就是您所需要的。如果您需要更具体地定位它,您可以使用 XPath 表达式或进一步的 Linq 调用,例如在层次结构的单个级别上工作的 Element()
。