PHP解析<;cpe-23:cpe23项目名称=“…”&引用>;?
我一直在用SimpleXML PHP解析这个标签 这是我的档案: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
<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;