【发布时间】:2009-12-04 00:08:16
【问题描述】:
有没有办法使用 Linq 将 XML 中的所有现有值替换为字典中的值?我正在使用 c#。
XML 示例:
<root>
<node1> <--without attribute
<subNode1>someTextValue</subNode1>
</node1>
<node2 name="myNode2"> <--With attribute (IMPORTANT!!!)
<subNod1>someOtherTextValue</subNode1>
</node2>
</root>
Dictionary<string, Hashtable> dataFromXML;
示例中的dataFromXML Keys 是node1 (because here is note an attribute), myNode2 (because here is an attribute)...
dataFromXML Values 是子节点。
现在假设我们在某个子节点中进行了一些值更改,并且我们想要更新 XML。
我怎样才能做到这一点,而不是使用 foreach 循环???
希望我的问题定义明确。
编辑
XElement 和 ReplaceWith 函数呢?
最好的问候。
【问题讨论】:
-
Linq 主要是一种“只读”技术。要更新 XML 文件,您将需要某种类型的 XML 编写器。
-
虽然我想你可以试试这个更新扩展:hookedonlinq.com/UpdateOperator.ashx
-
从您提出问题的方式来看,“我们在某些子节点中进行了一些值更改,我们想要更新 XML”听起来您只是在进行查询然后更新 First()或 Single() 结果,所以我不明白为什么你需要一个 foreach 。如果您的意思是要更新许多 SubNode1 值并且您想在没有 foreach 的情况下执行此操作,那么您可以使用 LINQs ForEach 运算符,但我不确定您要问的是什么。
-
您找到解决方案了吗? Linq 不是只读技术,您可以从 xelement 更新数据...