如何使用DOMXPath从php中的XML文件中获取XML元素属性的值


How to get value of XML Element Attribute from xml file in php with DOMXPath

这里是一个简单的XML文件,我需要获取unitCode的值,我使用DOMXPath对象来获取这些值。

<cbc:ConsumerUnitQuantity unitCode="BX">
    80.000
</cbc:ConsumerUnitQuantity>

我试过

$unitCode = $xpath->query('//cbc:ConsumerUnitQuantity [@unitCode=""]')->item(0);

您缺少名称空间。XML元素有一个名称空间前缀,但没有在Xpath对象上注册。检查文档中的xmlns:cbc属性。

$xml = <<<'XML'
<cbc:ConsumerUnitQuantity xmlns:cbc="your-namespace" unitCode="BX">
    80.000
</cbc:ConsumerUnitQuantity>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
$xpath->registerNamespace('ns-cbc', 'your-namespace');
var_dump(
  $xpath->evaluate('string(//ns-cbc:ConsumerUnitQuantity)', NULL, FALSE)
);

DOMXpath::query()不同,DOMXpath::evaluate()可以直接返回标量值。