从Xml广告文件中删除整个节点?

时间:2012-12-24 07:34:18

标签: c# asp.net xml xmlnode

我正在尝试删除与特定条件相匹配的整个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文档。该文档没有根元素。

2 个答案:

答案 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,因此至少不需要它。