Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Php XML xPath在一个查询中获取父属性和子结果_Php_Xml_Xpath - Fatal编程技术网

Php XML xPath在一个查询中获取父属性和子结果

Php XML xPath在一个查询中获取父属性和子结果,php,xml,xpath,Php,Xml,Xpath,我有以下XML: <Parent> <Children name='RandomValueIdontKnow'> <x>1</x> <x>2</x> <x>3</x> <x>4</x> </Children> </Parent> 但是它只会产生name属性值,而忽略x的值。 我试图从xml中删除Parent,并执行以

我有以下XML:

 <Parent>
  <Children name='RandomValueIdontKnow'>
   <x>1</x>
   <x>2</x>
   <x>3</x>
   <x>4</x>
  </Children>
 </Parent>
但是它只会产生
name
属性值,而忽略
x
的值。
我试图从xml中删除
Parent
,并执行以下查询:

xpath("@name|x"); //grabs name's attribute value and all of the x's values
它工作得很好,出于某种原因,当有父母或其他什么的时候它就会停止。。这让我有点困惑

对于XPath 1.0,请尝试:

(/*/Children/@name|/*/Children/x)
对于XPath 2.0,请尝试:

/*/Children/(@name|x)

x
不是根节点,因此您必须重复
子节点

"Children/@name|Children/x"

如果有几种类型的节点,我如何知道结果x的名称?我是说。。有没有办法让@name在结果中的数组中包含x?没有。没有这样的层次结构,属性如何包含真正的节点(顺便说一句:Daniel的答案更好,我接受这个答案…)。尽管,另一个选择可能只是选择
子节点[@name]
,只需检索
子节点中的名称和
x
节点,就可以保持一切整洁。
"Children/@name|Children/x"