【发布时间】:2015-03-24 19:23:04
【问题描述】:
我正在尝试选择不包含任何文本的节点。这段 php 代码跳过了示例 xml 中的空节点。但是,当我尝试在线测试器(如http://freeformatter.com/xpath-tester.html)时,它没有任何问题。
这是 PHP 的事情吗?
我的php代码:
$path = "//RecipeSteps/RecipeStep[not(text())]";
$stepsQuery = $this->xpath->query($path);
$numResults = $stepsQuery->length;
我的示例 xml:
<?xml version="1.0" encoding="utf-8"?>
<Recipes>
<RecipeSteps>
<RecipeStep number="1">Dummy content</RecipeStep>
<RecipeStep number="2">Dummy content</RecipeStep>
<RecipeStep number="3">Dummy content</RecipeStep>
<RecipeStep number="4">Dummy content</RecipeStep>
<RecipeStep number="5">Dummy content</RecipeStep>
<RecipeStep number="6"></RecipeStep>
<RecipeStep number="7">Variations</RecipeStep>
<RecipeStep number="8">Some variation content..</RecipeStep>
</RecipeSteps>
</Recipes>
【问题讨论】:
-
我不知道为什么这不起作用,但这应该起作用: $emptyRecipeSteps=call_user_func(function() use (&$DOMDocument){$ret=array();foreach($DOMDocument- >getElementsByTagName("RecipeStep") as &$recipeStep){if(empty($recipeStep->textContent){$ret[]=$recipeStep;}}return $ret;});
-
PHP 和您引用的在线示例给出完全相同的结果:3v4l.org/bKuOd - 那么您在烦恼什么?