检查列表中的XML值

问题描述 投票:1回答:1

我有一个字符串列表,其中包含以下数字{"2", "5", "7"}。

我也有一个xml,如下所示

<Product>
   <Record>
      <Categories>
        <SubCategories>  
           <References>2</References>
           <References>1</References>
           <References>10</References>
        </SubCategories>
      </Categories>
      <Categories>
        <SubCategories>  
           <References>154</References>
            <References>75</References>
           <References>0</References>
        </SubCategories>
      </Categories>
      <Categories>
        <SubCategories>  
           <References>7</References>
        </SubCategories>
      </Categories>          
   </Record>
</product>

我想在一个单独的xml文件中检索所有类别,其refernce值至少包含上述列表中的一个值。

我不知道该怎么做

xmldoc.load(filepath) (xmldoc is the xmldocument of the file)
Dim CategoriesList = xmldoc.descendants("Record")
for each item in CategoriesList 
   Dim SubCategoriesList = item.descendants("Subcategories")
Next

请告诉我如何检查这些值并获得所需的类别。

xml vb.net xslt xml-parsing xmldocument
1个回答
0
投票

您可以通过以下方法检查 "Categories "元素是否有 "References "的值。AnyHashSet(Of String)

Dim required = New String() {"1", "2", "3"}.ToHashSet()
Dim product = XDocument.Load("path-to-file")

Dim categories = product.Descendants("Categories").
    Where(Function(category) category.
        Descendants("References").
        Any(Function(r) required.Contains(r.Value))
    ).
    ToArray()

HashSet是为了减少数值的枚举量。HashSet.Contains 检查值只需一次操作O(1)。

© www.soinside.com 2019 - 2024. All rights reserved.