我正在尝试删除与特定条件相匹配的整个XmlNode
我的xml文件的格式如下:
<?xml version="1.0" encoding="utf-8"?>
<Advertisements>
<Ad>
<ImageUrl>image/Hydrangeas.jpg</ImageUrl>
<NavigateUrl>www.google.com</NavigateUrl>
<AlternateText>nbfndbf</AlternateText>
<ID>0</ID>
<Impressions>1</Impressions>
</Ad>
</Advertisements>
我的删除代码:
XElement x =
new XElement("Ad",
new XElement("ImageUrl", lblImageURL.Text),
new XElement("NavigateUrl", lblImageURL.Text),
new XElement("AlternateText", lblAlternateText.Text),
new XElement("ID", lblID.Text),
new XElement("Impressions", lblfrequency.Text));
string filepath = Request.PhysicalApplicationPath.ToString() + "Adrotator.xml";
XmlDocument xD = new XmlDocument();
xD.LoadXml(x.ToString());
XmlNode xN = xD.FirstChild;
xN.ParentNode.RemoveChild(xN);
**xD.Save(filepath);**
我收到错误无效的XML文档。该文档没有根元素。
答案 0 :(得分:1)
你可以使用linq to xml来实现这个例子,如何删除值为ID = 0的节点
var q = (from c in doc.Descendants("Advertisements")
from v in c.Elements("Ad")
where (int) v.Element("ID") == 0
select v).Remove();
这是使用xpath
的另一个例子doc.XPathSelectElement("Advertisements/Ad[ID = 0]").Remove();
答案 1 :(得分:0)
使用以下代码创建新的XDocument(doc):
XDocument doc = XDocument.Load(filepath);
Xml文件中是否有东西(带有根元素)?此外,您似乎没有在代码中使用doc,因此至少不需要它。