我想在特定位置更新我的XML。请帮忙。今天是我提交项目的最后日期。
<?xml version="1.0" encoding="utf-8"?>
<A>
<B>
<C>
<D>
Item1
</D>
<E>
<F type="id" text="Item type">
<E>
<G type="id" width="" text="Pen">
<image name="Pen1" url="www.mysite.com"></image>
</G>
</E>
<E>
<G type="id" width="" text="Pencil">
<image name="Pen1" url="www.mysite2.com"></image>
</G>
</E>
</F>
</E>
<D>
Item2
</D>
<E>
<F type="id" text="Item type">
<E>
<G type="id" width="" text="Book">
<image name="Pen1" url="www.mysite3.com"></image>
</G>
</E>
<E>
<G type="id" width="" text="Book2">
<image name="Pen1" url="www.mysite4.com"></image>
</G>
</E>
</F>
</E>
</C>
</B>
</A>
以前我知道D元素vaue,F,G属性Text值,需要更新图像URL。 请帮助,我无法搜索确切的网址。 我用了
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
XmlNodeList elemList = doc.GetElementsByTagName("F");
XmlNodeList subelemlist = doc.GetElementsByTagName("G");
for (int i = 0; i < elemList.Count; i++)
{
string attrVal = elemList[i].Attributes["text"].Value;
if (attrVal == "Pen")
{
for (int j = i - 1; j < subelemlist.Count; j++)
{
string attrval2 = subelemlist[j].Attributes["URL"].Value;
subelemlist[j].Attributes["URL"].Value = colURL;
doc.Save(xmlPath);
break;
}
}
}
答案 0 :(得分:0)
如果我了解您的要求,那么您正在寻找一个text
属性值为Pen
的元素。您想要更改image
元素的URL
。如果因此,您可以使用LINQ to XML:
var xDoc = XDocument.Load(xmlPath);
var elements = xDoc.Descendants()
.Where(x => (string)x.Attribute("text") == "Pen");
.ToList();
foreach(var item in elements)
{
var imageElement = item.Elements("image").FirstOrDefault();
if(imageElement != null)
{
imageElement.Attribute("url").Value = newUrl; // change the url value
xDoc.Save(xmlPath);
}
}