首页 > 解决方案 > XML 使用 SelectNodes 来获取具有空值子节点的节点

问题描述

目前我们得到一个节点列表,其中特定节点具有 0.00、0 或 0,00 值。

hoofddocument.SelectNodes("//Product[./polispremie_1[.='0,00' or .='0' or .='0.00' ]]")

但如果“polispremie_1”节点为空,我们也希望包含 Product 节点。

我宁愿在当前的 xpath 中添加一些东西。

我试过添加 ' or .= null ' 但这不起作用。

xml 示例:

<Products>
    <Product>
        <polispremie_1/>
    </Product>
    <Product>
        <polispremie_1>0</polispremie_1>
    </Product>
</products>

在此示例中,第一个产品的 polispremie_1 具有空值。我想通过上述查询获得两者,但我只获得第二个产品。

标签: c#xmlvb.net

解决方案


一个 VB 例子

    Dim testXE As XElement = <Products>
                                 <Product>
                                     <polispremie_1/>
                                 </Product>
                                 <Product>
                                     <polispremie_1>0</polispremie_1>
                                 </Product>
                                 <Product>
                                     <polispremie_1>0.0</polispremie_1>
                                 </Product>
                             </Products>

    Dim ie As IEnumerable(Of XElement)
    Dim d As Decimal
    ie = From el As XElement In testXE...<polispremie_1>
           Where (Decimal.TryParse(el.Value, Globalization.NumberStyles.Any,
                                  Globalization.CultureInfo.InvariantCulture,
                                  d) AndAlso d = 0) OrElse el.Value = ""
           Select el

    'look at results in ie

推荐阅读