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

如何使用DOMXPath从php中的XML文件中获取XML元素属性值,php,xml,xpath,Php,Xml,Xpath,这是一个简单的XML文件,我需要获取unitCode的值,我使用DOMXPath对象来获取值 <cbc:ConsumerUnitQuantity unitCode="BX"> 80.000 </cbc:ConsumerUnitQuantity> 您缺少名称空间。XML元素具有名称空间前缀,但未在Xpath对象上注册名称空间前缀。检查文档中的xmlns:cbc属性 $xml = <<<'XML' <cbc:ConsumerUnitQuant

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

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

您缺少名称空间。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)
);
$xml=evaluate('string(//ns cbc:ConsumerRunitQuantity'),NULL,FALSE)
);

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

您能用
cbc
名称空间定义粘贴一个更完整的XML示例吗?
$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)
);