LINQXML选择节点
我有xml文档:LINQXML选择节点,xml,linq,Xml,Linq,我有xml文档: <users> <user_tuple> <userid>U01</userid> <code> <name>Tom Jones</name> </code> <rating>B</rating> </user_tupl
<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>
例如:
searchInfo(“根节点”、“用户ID”、“代码”、“U01”、“汤姆·琼斯”)
res=U01
汤姆·琼斯
B
结果:
用户标识U01
叫汤姆·琼斯
B级
可能吗?试试这个
var doc = XDocument.Parse(s);
var res = doc.Elements("users").Elements("user_tuple")
.Where(
x =>
(string)x.Element("userid") == "U01" &&
(string)x.Element("code").Element("name") == "TomJones")
).ToList();
或者使用XPath:
var res = doc.XPathSelectElements("
users/user_tuple[userid='U01' and code[name='TomJones']]
").ToList();
你能澄清一下你是在使用C#还是Visual Basic吗?Linq在这两种版本中都可用。实际上,在我看来,VB中的一些XML操作比C#更容易。您需要指定子体吗?
doc.subjects()。其中…
真的吗?!?!这将使查询执行大量不必要的工作…@MarcinJuraszek你说得对,最好使用doc.Elements(“用户”).Elements(“用户元组”)
res = <userid>U01</userid>
<code>
<name>Tom Jones</name>
</code>
<rating>B</rating>
and result:
userid U01
name Tom Jones
rating B
var doc = XDocument.Parse(s);
var res = doc.Elements("users").Elements("user_tuple")
.Where(
x =>
(string)x.Element("userid") == "U01" &&
(string)x.Element("code").Element("name") == "TomJones")
).ToList();
var res = doc.XPathSelectElements("
users/user_tuple[userid='U01' and code[name='TomJones']]
").ToList();