我被困在用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-23上的名称内容:cpe23-item。
这是我现在的代码:
foreach ($xml->{'cpe-item'} as $cpe) {
echo $cpe->children('cpe-23', TRUE) // This is the line I have to modify
}发布于 2015-01-21 21:31:49
$cpe->children('cpe-23', TRUE)返回名称空间中所有前缀为cpe-23:的子项。
要获得一个特定子元素,最简单的方法是通过名称引用它,在本例中是->cpe23-item,因为元素是<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;https://stackoverflow.com/questions/28012487
复制相似问题