这里是简单的XML文件,我需要获取unitCode
的值,我使用DOMXPath
对象来获取值。
<cbc:ConsumerUnitQuantity unitCode="BX">
80.000
</cbc:ConsumerUnitQuantity>
我试过了
$unitCode = $xpath->query('//cbc:ConsumerUnitQuantity [@unitCode=""]')->item(0);
答案 0 :(得分:1)
你错过了命名空间。 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()
可以直接返回标量值。