Vb.net 如何搜索包含特定文本的XML节点?
我有一个包含多个嵌套节点的XML文档。它的结构不是固定的。我想根据用户传递的值过滤XML。i、 e如果在所有1000个节点中,如果5个节点包含以“xyz”开头的值,则我要检索这5个节点 我正在尝试使用LINQtoXML来实现这一点,因为我在xPath中找不到“LIKK”类型的运算符。我应该用LINQ写什么样的查询 到目前为止,我做了如下工作:Vb.net 如何搜索包含特定文本的XML节点?,vb.net,linq,linq-to-xml,Vb.net,Linq,Linq To Xml,我有一个包含多个嵌套节点的XML文档。它的结构不是固定的。我想根据用户传递的值过滤XML。i、 e如果在所有1000个节点中,如果5个节点包含以“xyz”开头的值,则我要检索这5个节点 我正在尝试使用LINQtoXML来实现这一点,因为我在xPath中找不到“LIKK”类型的运算符。我应该用LINQ写什么样的查询 到目前为止,我做了如下工作: dim FilterString as string = "abc" Dim doc = New XDocument(L
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>
abcxys
非国大
abcggh
123
我想要root/node/p1和root/node/c1/c2作为我的结果。我怎样才能做到这一点呢?如果它们可以在任何节点中,那么您必须查询每个节点,没有什么可以过滤的。这可能是一个非常昂贵的过程
string userInput = "abc";
var xDoc = XDocument.Load(@"C:\Test\Xml.xml");
var q = from e in xDoc.Descendants()
where e.Value.IndexOf(userInput) == 1
select e;
如果您只想测试字符串的第一部分,您仍然需要返回整个值并根据您的条件测试字符串。
此查询检查文本“abc”是否出现在字符串的开头(空字符串返回0),并返回需要该条件的元素集合