【问题标题】:Update XElement value in XDocument?更新 XDocument 中的 XElement 值?
【发布时间】:2009-08-26 19:34:09
【问题描述】:

我有一个带有 XElement 的 XDocument,例如:

<PageContent>
  <Text>My Text</Text>
  <Image>image.jpg</Image>
</PageContent>

我想找到 Text 元素并更新它的值。我有一些 LINQ 工作,但它返回值,而不是允许我更新 XElement 和 XDocument 作为回报。

【问题讨论】:

    标签: linq linq-to-xml


    【解决方案1】:

    您不能在单个 LINQ 语句中执行此操作 - LINQ 是关于查询的,而您正在执行更新。您应该使用 LINQ 来查询要更新的元素,然后通过 foreach 中的列表并应用更改;例如:

    var pageContents = doc./* ... */.Elements("PageContents").Where(...);
    foreach (var pageContent in pageContents)
    {
        pageContent.Element("Text").Value = "Foo";
        pageContent.Element("Image").Value = "bar.jpg";
    }
    

    【讨论】:

    • 我已经这样做了: var q = XMLData.Descendants("PageContent").Descendants().SingleOrDefault(x => x.Name == item.Key); q.Value = item.Value;但是,当我查看 XMLData 时,什么都没有改变
    • 您的查询听起来不错。如果您没有看到变化,那么很可能是因为您检查它的方式。您能否发布用于验证更改是否发生的代码?
    • 添加 doc.Save(...);
    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多