检查空元素

时间:2013-06-17 22:04:42

标签: php xpath xml-parsing simplexml

对于这个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上有一些类似的问题,但我无法弄明白)

1 个答案:

答案 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