使用C#中的XMLReader忽略XML中的父节点

时间:2014-07-25 14:25:45

标签: c# xml

我有一个XML文件,我必须从中提取一些特定节点并将它们放在SQL表中。

我正在使用XmlReader并在XmlReader.Name

上有切换案例

这里只是一个节点很少的示例,只是为了解释。

<products>
   <product>
       <description>Nothing</description>
       <cost>$34.78</cost>
       <inventory>166</inventory>
   </product>
   <product>
       <description>Nike Cap 17893</description>
       <cost>$29.99</cost>
       <inventory>54</inventory>
   </product>
</products>

这个想法是如果描述节点中没有Nothing,我应该忽略整个产品并转移到下一个产品。

我想在这种情况下使用XmlReader.Skip(),但它似乎只跳过了chidren节点而是父节点。

只是想知道C#是否提供了忽略父节点的任何方法?

2 个答案:

答案 0 :(得分:1)

使用Linq To Xml,你可以很容易地忽略所有&#34; Nothing&#34;并且只处理其他元素。

这是快速示例。

XElement root = XElement.Load("file.xml");
IEnumerable<XElement> productsWithoutNothing = from product in root.Elements("product")
                                               where (string)product.Element("description") != "Nothing"
                                               select product;

答案 1 :(得分:0)

我认为如果使用XSL过滤节点会更容易。

步骤1:使用XSL获取具有描述

的(父)节点列表

第2步:遍历此过滤集