0

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

4

1 回答 1

0

<entry> </entry>不是空的,它包含' '

相对于<entry></entry>or<entry />是空的。

因此,以您的 XML 示例为例,用于xpath创建节点数组 NOT 空且 NOT ' '

$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

于 2013-06-18T22:55:54.887 回答