Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQXML选择节点_Xml_Linq - Fatal编程技术网

LINQXML选择节点

LINQXML选择节点,xml,linq,Xml,Linq,我有xml文档: <users> <user_tuple> <userid>U01</userid> <code> <name>Tom Jones</name> </code> <rating>B</rating> </user_tupl

我有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>
例如:

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();