首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP parse <cpe-23:cpe23-item name=“... ">?

PHP parse <cpe-23:cpe23-item name=“... ">?
EN

Stack Overflow用户
提问于 2015-01-19 01:13:56
回答 1查看 188关注 0票数 1

我被困在用SimpleXML PHP解析这个标签。

这是我的文件:

代码语言:javascript
复制
<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。

这是我现在的代码:

代码语言:javascript
复制
foreach ($xml->{'cpe-item'} as $cpe) {
  echo $cpe->children('cpe-23', TRUE) // This is the line I have to modify
}
EN

回答 1

Stack Overflow用户

发布于 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

把这些放在一起,你就有了:

代码语言:javascript
复制
echo $cpe->children('cpe-23', TRUE)->{'cpe23-item'}->attributes(null)->name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28012487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档