我的XML如下
<Oil>
  <Book>
    <日期>2009-04-16</日期>
    <里程表>2000</里程表>
    <燃油类型>93#无铅汽油</燃油类型>
    <单价>5.14</单价>
    <总金额>253/总金额>
    <加满>是</加满>
    <加油站地址>湖东路加油站</加油站地址>
    <油耗>0.49</油耗>
    <备注>每年的摩托大会,必定是摩托车和车手的节日。今年也不例外。马鞍山三大俱乐部,共近100多台摩托车、汽车,200余人,参加了这次盛会。到会的全国各地的摩托车近1200辆。名车、美女如云啊!</备注>
  </Book>
  <Book>
  </Book>
  <Book>
    <日期>2008-04-16</日期>
    <里程表>1000</里程表>
    <燃油类型>93#无铅汽油</燃油类型>
    <单价>5.14</单价>
    <总金额>25</总金额>
    <加满>是</加满>
    <加油站地址>湖东路加油站</加油站地址>
    <油耗>0.49</油耗>
    <备注>每年的摩托大会,必定是摩托车和车手的节日。今年也不例外。马鞍山三大俱乐部,共近100多台摩托车、汽车,200余人,参加了这次盛会。到会的全国各地的摩托车近1200辆。名车、美女如云啊!</备注>
  </Book>
<Oil>
我想把<Book></Book>这个空的删除,C#代码怎么写?

解决方案 »

  1.   

    你直接Replace好了吧...str = str.Replace("<Book> </Book>","");//或者
    str=Regex.Replace(str,@"<Book>\s*</Book>","");
      

  2.   

    XmlDocument doc = new XmlDocument ();
    doc.load(@"C:\1.xml");
    XmlNodeList list = doc.DocumentElement.GetElementByName("Book");
    for(int i =0;i<list.count;i++)
    {
       if(list[i].innerXml=NULL)
       {
         doc.DocumentElement.RemoveChild(list[i]);
       } 
    }
      

  3.   

    XmlDocument doc = new XmlDocument();
    doc.Load("e:\\1.xml");
    XmlNodeList list = doc.SelectNodes("/Oil/Book[count(*)=0]");foreach (XmlNode node in list)
    {
        node.ParentNode.RemoveChild(node);
    }
    doc.Save("e:\\1.xml");
      

  4.   

       xmlDoc.Load(@"D:\1.Xml");
                System.Xml.XmlNode xn = xmlDoc.SelectSingleNode("Oil");
                foreach(XmlNode xnode in xn)
                {
                    if (xnode.ChildNodes.Count == 0)
                    {
                        xn.RemoveChild(xnode);
                    }
                   
                }
                xmlDoc.Save(@"D:\\2.xml");