【问题标题】:XML XElement / Linq replace values with data from dictionaryXML XElement / Linq 用字典中的数据替换值
【发布时间】: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 Keysnode1 (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 更新数据...

标签: c# .net xml linq xelement


【解决方案1】:

我认为您不能在 Linq 查询中更新 XDocument。无论如何,开发 foreach 语句会很容易(相信我,你会浪费更少的时间),并记住 linq 查询被称为循环语句,所以即使你只看到一行代码,循环实际上也存在......

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2014-07-12
    • 2020-07-29
    • 1970-01-01
    • 2020-02-15
    • 2021-03-19
    • 2021-08-31
    相关资源
    最近更新 更多