我有一个字符串列表,其中包含以下数字{"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
请告诉我如何检查这些值并获得所需的类别。
您可以通过以下方法检查 "Categories "元素是否有 "References "的值。Any
和 HashSet(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)。