【发布时间】:2021-05-03 17:30:14
【问题描述】:
此问题旨在作为回答一个特别常见问题的参考,该问题可能采用不同的形式:
- 我有一个包含多个命名空间的 XML 文档;如何使用 SimpleXML 解析它?
- 我的 XML 在标签名称中有一个冒号 (":"),我如何使用 SimpleXML 访问它?
- 当 XML 文件中的属性名称中有冒号时,如何访问它们?
如果您的问题与此重复,则可能与这些示例不同,但此页面应告诉您需要了解的内容。
这是一个说明性示例:
$xml =
<<<XML
<?xml version="1.0" encoding="utf-8"?>
<document xmlns="http://example.com" xmlns:ns2="https://namespaces.example.org/two" xmlns:seq="urn:example:sequences">
<list type="short">
<ns2:item seq:position="1">A thing</ns2:item>
<ns2:item seq:position="2">Another thing</ns2:item>
</list>
</document>
XML;
$sx = simplexml_load_string($xml);
此代码不起作用;为什么不呢?
foreach ( $sx->list->ns2:item as $item ) {
echo 'Position: ' . $item['seq:position'] . "\n";
echo 'Item: ' . (string)$item . "\n";
}
第一个问题是->ns2:item是无效语法;但是把它改成这个也不行:
foreach ( $sx->list->{'ns2:item'} as $item ) { ... }
为什么不呢,你应该改用什么?
【问题讨论】:
标签: php simplexml xml-namespaces