猿问

引用-如何处理SimpleXML中的命名空间(带有冒号的标记和属性)?

引用-如何处理SimpleXML中的命名空间(带有冒号的标记和属性)?

这个问题的目的是为了回答一个特别常见的问题,这个问题可以采取不同的形式:

  • 我有一个包含多个名称空间的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>
';$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 ) { ... }

为什么不呢,你应该用什么代替呢?


慕村225694
浏览 595回答 1
1回答
随时随地看视频慕课网APP
我要回答