我有一个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#是否提供了忽略父节点的任何方法?
答案 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步:遍历此过滤集