dql123000 2013-12-18 10:26
浏览 82

如何使用DOMXPath从php中的xml文件获取XML Element Attribute的值

here is simple XML File and i need to get the value of unitCode and i am using DOMXPath object to get the values.

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

i have tried

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

1条回答 默认 最新

  • dongyao2001 2013-12-18 11:12
    关注

    You're missing the namespace. You XML elements have a namespace prefix, but you did not register one on the Xpath object. Check you document for a xmlns:cbc attribute.

    $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.

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?