相关疑难解决方法(0)

使用SimpleXML使用命名空间解析XML

我把它作为xml:

<root xmlns:event="http://www.webex.com/schemas/2002/06/service/event">
    <event:event>
        <event:sessionKey></event:sessionKey>
        <event:sessionName>Learn QB in Minutes</event:sessionName>
        <event:sessionType>9</event:sessionType>
        <event:hostWebExID></event:hostWebExID>
        <event:startDate>02/12/2009</event:startDate>
        <event:endDate>02/12/2009</event:endDate>
        <event:timeZoneID>11</event:timeZoneID>
        <event:duration>30</event:duration>
        <event:description></event:description>
        <event:status>NOT_INPROGRESS</event:status>
        <event:panelists></event:panelists>
        <event:listStatus>PUBLIC</event:listStatus>
    </event:event>
    ...
</root>
Run Code Online (Sandbox Code Playgroud)

我如何遍历所有事件:事件节点和显示,例如,所有事件:SessionKey?

这不起作用:

$xml = new SimpleXMLElement($r);
$xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');

foreach($xml->xpath('//e:event') as $event) {
 var_export($event->xpath('//e:sessionKey'));
}
Run Code Online (Sandbox Code Playgroud)

php xml namespaces simplexml

51
推荐指数
6
解决办法
8万
查看次数

参考 - 如何在SimpleXML中处理名称空间(带冒号的标签和属性)?

这个问题旨在作为回答一个特别常见的问题的参考,这个问题可能有不同的形式:

  • 我有一个XML文档,其中包含多个名称空间; 如何使用SimpleXML解析它?
  • 我的XML在标记名称中有一个冒号(":"),如何使用SimpleXML访问它?
  • 当名称中包含冒号时,如何访问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);
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用 ; 为什么不?

foreach ( $sx->list->ns2:item as $item ) {
    echo 'Position: ' . $item['seq:position'] . "\n";
    echo 'Item: ' . (string)$item . "\n";
}
Run Code Online (Sandbox Code Playgroud)

第一个问题是->ns2:item语法无效; 但将其更改为此也不起作用:

foreach ( $sx->list->{'ns2:item'} as $item ) { ... }
Run Code Online (Sandbox Code Playgroud)

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

php simplexml xml-namespaces

7
推荐指数
1
解决办法
1419
查看次数

标签 统计

php ×2

simplexml ×2

namespaces ×1

xml ×1

xml-namespaces ×1