我有一个包含多个嵌套节点的 XML 文档。它的结构不是固定的。我想根据用户传递的值过滤 XML。即,如果在所有 1000 个节点中,如果 5 个节点包含以“xyz”开头的值,那么我想检索这 5 个节点。
我正在尝试使用 LINQ to XML 来实现这一点,因为我在 xPath 中找不到“LIKK”类型的运算符。我应该在 LINQ 中编写什么样的查询?
到目前为止,我正在做如下的事情:
dim FilterString as string = "abc"
Dim doc = New XDocument(Linq.XElement.Parse(objXML.DocumentElement.OuterXml))
Dim query = doc.Elements()
query = From e In doc.Elements()
Where e.Value.ToUpper.StartsWith(FilterString.ToUpper)
Select e
Dim sb As New StringBuilder
For Each result In query
sb.AppendLine(result)
Next
示例 XML 将如下所示:
<root>
<node>
<p1>abcxys</p1>
<p2>anc</p2>
<c1>
<c2>abcggh</c2>
<c3>123</c3>
</c1>
</node>
</root>
我想要 root/node/p1 和 root/node/c1/c2 作为我的结果。我怎样才能做到这一点?