我试图理解PHP中DOMXPath的基础知识 . 我有一个XML文件,从下面的内容开始 .
<?xml version="1.0"?>
<ListFinancialEventsResponse xmlns="http://mws.amazonservices.com/Finances/2015-05-01">
<ListFinancialEventsResult>
<FinancialEvents>
<ShipmentEventList>
<ShipmentEvent>
我正在尝试使用下面的PHP获取FinancialEvents标签,但有一些不同的xpath查询尝试但都不起作用 .
$file = file_get_contents('file.xml');
$dom = new DOMDocument();
$dom->loadXML($file);
$xpath = new DOMXPath($dom);
$xpath->registerNamespace('m','http://mws.amazonservices.com/Finances/2015-05-01');
$events = $xpath->query('FinancialEvents'); // Attempt 1
$events = $xpath->query('m:FinancialEvents');// Attempt 2
根据文档,这些应返回名为“FinancialEvents”的所有节点 . 我知道如果我使用下面的xpath查询它是有效的
$events = $xpath->query('//m:FinancialEvents');
所以我的问题是,为什么我的前两个查询不起作用?元素<FinancialEvents>也不是同名的节点吗?
谢谢
1 回答
未经测试但您可以尝试:
我怀疑前几个查询没有返回节点列表是因为你有效地尝试在根级别找到节点
FinancialEvents
如果你为查询提供了一个引用节点(它将是一个DOMNodeListFinancialEventsResult
),那么它就可以工作了 .