【发布时间】:2015-07-08 16:40:25
【问题描述】:
这些问题很多,请见谅。我都读过了。
我有以下使用命名空间 http://www.columbasystems.com/cpng/xmlviewer/cal/1-0/ 的 XML 文档:http://events.manchester.ac.uk/f3vf/calendar/tag:manchester_museum/view:list/p:q_details/calml.xml
我正在尝试使用 SimpleXML 解析此文档。下面的示例代码是尝试从下面访问标题节点“发现中心”的值。
<ns:calendar xmlns:ns="http://www.columbasystems.com/cpng/xmlviewer/cal/1-0/">
<ns:listView>
<ns:day date="2015-07-08" weekDay="Wed">
<ns:event>
<ns:id xmlns:even="http://www.columbasystems.com/customers/uom/gpp/eventid/" query="{http://www.columbasystems.com/customers/uom/gpp/eventid/}b9v-ib270yqf-nmn54k">even:b9v-ib270yqf-nmn54k</ns:id>
<ns:title>Discovery Centre</ns:title>
...
</ns:event>
</ns:day>
</ns:listView>
</ns:calendar>
PHP:
$feed_uri = 'http://events.manchester.ac.uk/f3vf/calendar/tag:manchester_museum/view:list/p:q_details/calml.xml';
$xml = simplexml_load_file($feed_uri);
$xml->registerXPathNamespace("ns", "http://www.columbasystems.com/cpng/xmlviewer/cal/1-0/");
foreach($xml->xpath('//ns:calendar/ns:listView/ns:day') as $day) {
$events = $day->xpath('//ns:event');
foreach($events as $event) {
var_export($event->xpath('//ns:title'));
}
}
输出几个空数组:
array ( 0 => SimpleXMLElement::__set_state(array( )),
我认为我使用 xpath 错误,我如何获得这些节点的值?
【问题讨论】:
-
代码运行时会发生什么?
-
它转储一个空数组 47 次。嵌套在
的第一个实例中,有 5 个单独的事件元素,因此嵌套的 foreach 显然没有像我预期的那样工作。输出为:array ( 0 => SimpleXMLElement::__set_state(array( )) 等等。编辑:更新问题以包含输出样本 -
@digitalpencil 在我的回答中查看更新