对于这个XML:
<row>
<entry XY="1" al="23" se="5" ag="fgh"> </entry>
<entry XY="1" al="23" se="5" ag="fgh">Content1</entry>
<entry XY="1" al="23" se="5" ag="fgh">Content2</entry>
<entry XY="1" al="23" se="5" ag="fgh"> </entry>
<entry XY="1" al="23" se="5" ag="fgh">Content3</entry>
</row>
我有以下循环:
foreach ($toc_element->entry as $toc_element_line) {
if ($toc_element_line->xpath('/*[text()]')) {
array_push($arr, $toc_element_line);
}
}
我正在尝试测试当前元素是否为空。 Object本身永远不会为空,因为可能是空元素,总是有属性(我不关心)。
XPath方法(我明显是新手)是否正确?如果是这样,我该怎么写呢?
提前多多感谢。 (我知道在stackoverflow上有一些类似的问题,但我无法弄明白)
答案 0 :(得分:0)
<entry> </entry>
不为空,包含' '
与<entry></entry>
或<entry />
为空。
因此,采用您的XML示例,使用xpath
创建一个非空的节点数组而不是' '
:
$xml = simplexml_load_string($x); // assume XML in $x
$nodes = $xml->xpath("//entry[text() and text()!=' ']");
foreach ($nodes as $node) echo "$node<br />"; // output
看到它正常工作:http://3v4l.org/8Y7uN