我有XML文档:LINQ XML中的所有内部节点
<users>
<user_tuple>
<userid>U01</userid>
<code>
<name>Tom Jones</name>
</code>
<rating>B</rating>
</user_tuple>
<user_tuple>
<userid>U02</userid>
<code>
<name>Mary Doe</name>
</code>
<rating>A</rating>
</user_tuple>
<user_tuple>
<userid>U03</userid>
<code>
<name>Dee Linquent</name>
</code>
<rating>D</rating>
</user_tuple>
</users>
如何我只选择那些(和所有子节点/元素),其中元素(“用户id”)值==“U01”和元素。 ( “名称”)值== “汤姆·琼斯” 等即我想要的结果:
<user_tuple>
<userid>U01</userid>
<code>
<name>Tom Jones</name>
</code>
<rating>B</rating>
</user_tuple>
我使用C#
public void searchInfo(string rootNode, string Element1Name, string Element2Name, string Element1Val, string Element2Val){
////// Select rootNode and all descend nodes
var res = root.Elements("rootNode")
.Where(
x =>
(string)x.Element(Element1Name) == Element1Val&&
(string)x.Element(Element2Name) == Element2Val)
).ToList();
///////////
foreach (var node in res){
Debug.Writeline("Name {0} Value {1}", node.Name, node.Value)
}
例子:
searchInfo("rootNode","userid","code", "U01", "Tom Jones")
res = <userid>U01</userid>
<code>
<name>Tom Jones</name>
</code>
<rating>B</rating>
and result:
userid U01
name Tom Jones
rating B
这可能吗?
Гарик希望有一个'Tuple' /'object'结果: (_and结果:用户ID U01,名汤姆·琼斯,等级B.这是可能的_?) 当你的片断不提供评分值 (即你可以用'out string rating' paramenter将它包装在一个函数中)。 – Salaros
@Salaros yep,就像我想的那样。 – Jodrell