如何基于同一级别上的另一个节点更改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值,我将如何更改相应的标题值?我一直在想办法,但遇到了障碍。
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;
}