simplexml 对象上的 xpath returns 无
xpath on simplexml object returns nothing
我有以下 XML 结构:
<?xml version="1.0" encoding="utf-8"?>
<q:quakeml xmlns="http://quakeml.org/xmlns/bed/1.2" xmlns:q="http://quakeml.org/xmlns/quakeml/1.2" xmlns:catalog="http://anss.org/xmlns/catalog/0.1">
<eventParameters publicID="static">
<event catalog:eventsource="rt">
</event>
<event catalog:eventsource="rt">
</event>
<event catalog:eventsource="rt">
</event>
</eventParameters>
</q:quakeml>
我正在使用以下代码构建一个 simplexml 对象并尝试使用 xpath 查询提取所有事件对象:
$se = simplexml_import_dom($dom);
$se->registerXPathNamespace('q', 'http://quakeml.org/xmlns/quakeml/1.2');
$se->registerXPathNamespace('c', 'http://anss.org/xmlns/catalog/0.1');
$events = $se->xpath('//event');
显然这不起作用,但我做错了什么。如何从此结构中获取所有事件对象?
由于您的文档有默认名称空间 (xmlns="http://quakeml.org/xmlns/bed/1.2"
),因此您需要注册它并为所有没有特定名称空间前缀的元素使用前缀...
$se->registerXPathNamespace('d', 'http://quakeml.org/xmlns/bed/1.2');
$events = $se->xpath('//d:event');
我倾向于使用 d
- 但您可以使用任何东西,只要您在 XPath 中使用相同的东西即可。
我有以下 XML 结构:
<?xml version="1.0" encoding="utf-8"?>
<q:quakeml xmlns="http://quakeml.org/xmlns/bed/1.2" xmlns:q="http://quakeml.org/xmlns/quakeml/1.2" xmlns:catalog="http://anss.org/xmlns/catalog/0.1">
<eventParameters publicID="static">
<event catalog:eventsource="rt">
</event>
<event catalog:eventsource="rt">
</event>
<event catalog:eventsource="rt">
</event>
</eventParameters>
</q:quakeml>
我正在使用以下代码构建一个 simplexml 对象并尝试使用 xpath 查询提取所有事件对象:
$se = simplexml_import_dom($dom);
$se->registerXPathNamespace('q', 'http://quakeml.org/xmlns/quakeml/1.2');
$se->registerXPathNamespace('c', 'http://anss.org/xmlns/catalog/0.1');
$events = $se->xpath('//event');
显然这不起作用,但我做错了什么。如何从此结构中获取所有事件对象?
由于您的文档有默认名称空间 (xmlns="http://quakeml.org/xmlns/bed/1.2"
),因此您需要注册它并为所有没有特定名称空间前缀的元素使用前缀...
$se->registerXPathNamespace('d', 'http://quakeml.org/xmlns/bed/1.2');
$events = $se->xpath('//d:event');
我倾向于使用 d
- 但您可以使用任何东西,只要您在 XPath 中使用相同的东西即可。