如何根据同一级别上的另一个节点更改XML节点的值?

时间:2012-03-06 21:29:39

标签: c# xml

我的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>

如果我有可用的网址值,我该如何更改相应的标题值?我一直试图解决这个问题,但我遇到了障碍。

2 个答案:

答案 0 :(得分:1)

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

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;
}

答案 1 :(得分:1)

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";