该文档中的元素绑定到命名空间http://mws.amazonservices.com/schema/Products/2011-10-01
。
您可能错过了它,因为它不使用命名空间前缀并且xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"
看起来像一个属性,但命名空间属性很特殊。
所有后代元素都继承该命名空间。您需要使用命名空间前缀注册命名空间并调整 XPath:
$rootNamespace = $xml->lookupNamespaceUri($xml->namespaceURI);
$xpath->registerNamespace('a', $rootNamespace);
$elementList = $xpath->query('//a:MarketplaceASIN/a:ASIN');
或者,您可以使用更通用的 XPath 来匹配元素并使用谓词过滤器来匹配local-name()
and namespace-uri()
:
//*[local-name()='MarketplaceASIN' and namespace-uri()='http://mws.amazonservices.com/schema/Products/2011-10-01']/*[local-name()='ASIN' and namespace-uri()='http://mws.amazonservices.com/schema/Products/2011-10-01']