我有一个XML如下:
<Nodes>
<Node>
<A>This is a dummy text {12345}</A>
<B>Output Value</B>
</Node>
<Node>
<A>This is another dummy text {3462832}</A>
<B>Output Value</B>
</Node>
</Nodes>
如果节点'A'中的文本包含密钥'12345'
,我正在使用Linq to XML并想要在节点'B'中选择输出值请提供应该用于实现此目的的LINQ查询的输入。
谢谢!
答案 0 :(得分:3)
这正是你想要的: -
var nodes = from n in xml.Descendants("Node")
.Where(x => x.Element("A").Value.Contains("12345"))
select n.Element("B").Value;
XML示例: -
<?xml version="1.0" encoding="utf-8"?>
<Nodes>
<Node>
<A>This is a dummy text {12345}</A>
<B>Output Value</B>
</Node>
<Node>
<A>This is a dummy text {12345}</A>
<B>Output Value 2</B>
</Node>
<Node>
<A>This is another dummy text {3462832}</A>
<B>Output Value</B>
</Node>
</Nodes>
将返回: -
Output Value
Output Value 2
答案 1 :(得分:0)
或者与LINQ和XPath一起使用:
XDocument xdoc = XDocument.Load(path_to_xml);
var b = (string)xdoc.XPathSelectElement("//Node[contains(A,'12345')]/B");
返回第一个找到的元素匹配条件的值。如果您需要所有匹配项,请改用 XPathSelectElements 。