Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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解析<;cpe-23:cpe23项目名称=“…”&引用>;?_Php_Xml_Simplexml - Fatal编程技术网

PHP解析<;cpe-23:cpe23项目名称=“…”&引用>;?

PHP解析<;cpe-23:cpe23项目名称=“…”&引用>;?,php,xml,simplexml,Php,Xml,Simplexml,我一直在用SimpleXML PHP解析这个标签 这是我的档案: <cpe-item name="cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::"> <cpe-23:cpe23-item name="cpe:2.3:a:\*:*:*:*:*:*:*:*:*:*"/> </cpe-item> $cpe->children('cpe-23',TRUE)返回名称空间中前缀为cpe-2

我一直在用SimpleXML PHP解析这个标签

这是我的档案:

<cpe-item name="cpe:/a:%240.99_kindle_books_project:%240.99_kindle_books:6::">
    <cpe-23:cpe23-item name="cpe:2.3:a:\*:*:*:*:*:*:*:*:*:*"/>
</cpe-item>
$cpe->children('cpe-23',TRUE)
返回名称空间中前缀为
cpe-23:
的所有子级

要找到一个特定的子元素,最简单的方法是按名称引用它,在本例中是,
->cpe23 item
,因为元素是
。然而,这会混淆PHP的解析器,因为
-
通常意味着“负”;您可以在名称周围使用
{}
,例如
->{'cpe23-item'}
,并将名称本身封装在撇号中,以避免出现这种情况

要获取该元素的属性,通常需要使用数组访问,例如
['name']
。然而,XML名称空间的一个怪癖意味着这里的
name=
属性不在名称空间中,因此您必须使用
->attributes()
函数“离开”您通过
->children()
调用“输入”的cpe-23名称空间,从而为您提供
->attributes(null)->name

总而言之,您有:

echo $cpe->children('cpe-23', TRUE)->{'cpe23-item'}->attributes(null)->name;
echo $cpe->children('cpe-23', TRUE)->{'cpe23-item'}->attributes(null)->name;