Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Xml 包含属性的Xpath_Xml_Xpath - Fatal编程技术网

Xml 包含属性的Xpath

Xml 包含属性的Xpath,xml,xpath,Xml,Xpath,鉴于此XML: <log> <xplmsg logdate="31-03-11 23:30:55" > <schema> <infopairs> <info name="device" value="Blah Humidity" ></info> <info name="type" value="humidity" ></info>

鉴于此XML:

<log> 
  <xplmsg logdate="31-03-11 23:30:55" > 
    <schema> 
      <infopairs> 
        <info name="device"  value="Blah Humidity" ></info> 
        <info name="type"  value="humidity" ></info> 
      </infopairs> 
    </schema> 
  </xplmsg> 
</log> 

xPath将返回什么:

  <xplmsg logdate="31-03-11 23:30:55" > 
    <schema> 
      <infopairs> 
        <info name="device"  value="Blah Humidity" ></info> 
        <info name="type"  value="humidity" ></info> 
      </infopairs> 
    </schema> 
  </xplmsg>

包括logdate=“31-03-11 23:30:55”

我想您需要

/log/xplmsg[@logdate = '31-03-11 23:30:55']

尽管@Alejandro的答案是正确的,还有更简单的XPath表达式可以精确地选择所需的元素:

/*/xplmsg 
甚至

/*/*
这是因为在所提供的XML文档中,top元素只有一个子元素——在本例中,不需要指定特定的属性名称/值,甚至不需要指定要选择的元素的名称

如果希望选择
xplmsg
子树的所有节点,请使用以下XPath表达式:

/*/xplmsg//@*  |   /*/xplmsg//node()

好问题,+1。有关完整的解决方案,请参见我的答案。:)