简体   繁体   English

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

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

here is simple XML File and i need to get the value of unitCode and i am using DOMXPath object to get the values. 这是简单的XML文件,我需要获取unitCode的值,并且我正在使用DOMXPath对象来获取值。

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

i have tried 我努力了

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

You're missing the namespace. 您缺少名称空间。 You XML elements have a namespace prefix, but you did not register one on the Xpath object. XML元素具有名称空间前缀,但是您没有在Xpath对象上注册一个。 Check you document for a xmlns:cbc attribute. 检查您的文档是否有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)
);

Unlike DOMXpath::query() , DOMXpath::evaluate() can return scalar values directly. DOMXpath::query()DOMXpath::evaluate()可以直接返回标量值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM