如何基于同一级别上的另一个节点更改XML节点的值

本文关键字:节点 另一个 XML 何基于 一级 | 更新日期: 2023-09-27 18:26:52

我的XML看起来像这样:

<?xml version = "1.0" encoding = "utf-8"?>
<gallery>
  <name>Rosie's Gallery</name>
  <image>
    <order>0</order>
    <url>images/HappyIcon.jpg</url>
    <title>Happy</title>
  </image>
  <image>
    <order>1</order>
    <url>images/SickIcon.jpg</url>
    <title>Sick</title>
  </image>
</gallery>

如果我有可用的url值,我将如何更改相应的标题值?我一直在想办法,但遇到了障碍。

如何基于同一级别上的另一个节点更改XML节点的值

XDocument xDoc = XDocument.Load(new StringReader(xmlstr));
string url="images/SickIcon.jpg";
var image = xDoc.Descendants("image")
                .Where(x => x.Element("url").Value == url)
                .First();
image.Element("title").Value = "Renamed Value";

如果使用LinqToXml,它看起来像:(假设您没有重复的url)

var urlValue = "images/SickIcon.jpg";
var newTitle = "New Title";
XDocument xdoc = XDocument.Load("<uri to file>");
XElement xImage = XDocument.root
  .Descendants("image")
  .FirstOrDefault(element => element.Elements("url").Any()
                             && element.Elements("title").Any()
                             && element.Elements("url").First().Value == urlValue);
if (xImage != null)
{
  xImage.Elements("title").First().Value = newTitle;
}