3 回答
TA贡献1155条经验 获得超0个赞
假设您有一些这样的xml。
<xhtml:div>
<xhtml:em>italic</xhtml:em>
<date>2010-02-01 06:00</date>
</xhtml:div>
您可以这样访问“ em”: $xml->children('xhtml', true)->div->em;
但是,如果需要日期字段,则此方法将$xml->children('xhtml', true)->div->date; 无法工作,因为您被卡在xhtml命名空间中。
您必须再次执行'children'以返回默认名称空间:
$xml->children('xhtml', true)->div->children()->date;
TA贡献1839条经验 获得超15个赞
如果您想快速修复它,请执行以下操作(我感到懒惰时会这样做):
// Will replace : in tags and attributes names with _ allowing easy access
$xml = preg_replace('~(</?|\s)([a-z0-9_]+):~is', '$1$2_', $xml);
这将转换<xhtml:到<xhtml_和</xhtml:到</xhtml_。有点hacky,如果涉及到CDATA NameSpaced XML容器块或UNICODE标记名称,可能会失败,但是我想您通常可以安全地使用它(还没有让我失败)。
TA贡献1806条经验 获得超8个赞
我认为摆脱冒号或用某些人建议的其他方式代替冒号不是一个好主意。您可以轻松访问具有名称空间前缀的元素。您可以将标识名称空间的URL传递给children()方法的参数,也可以将名称空间前缀和“ true”传递给children()方法。第二种方法需要PHP 5.2及更高版本。
SimpleXMLElement :: children
- 3 回答
- 0 关注
- 480 浏览
相关问题推荐
添加回答
举报