【问题标题】:PHP How to read child elements of XMLPHP如何读取XML的子元素
【发布时间】:2018-01-01 19:42:01
【问题描述】:

我认为对此有一个非常简单的答案。

XML 看起来像:

<ORDERSTATUS>
      <DATE>10/03/17</DATE>
      <INVOICE>abc</INVOICE>
      <INVTOTAL Tax="15.00" Freight="18" SubTotal="100.00">133.0</INVTOTAL>
<ORDERSTATUS>

使用simple_xml_load_string 不会返回TaxFreightSubTotal元素。它只显示Invoice

[DATE] => 10/03/17 
[INVOICE] => abc 
[INVTOTAL] => 133.0

如何检索这些内在价值?

谢谢

【问题讨论】:

标签: php xml simplexml


【解决方案1】:

假设您的 xml 应该以结束 &lt;/ORDERSTATUS&gt; 结尾

simplexml_load_string 返回一个SimpleXMLElement,它有一个attributes 方法,您可以从中获取“税”等。

例如:

$string = <<<XML
<ORDERSTATUS>
    <DATE>10/03/17</DATE>
    <INVOICE>abc</INVOICE>
    <INVTOTAL Tax="15.00" Freight="18" SubTotal="100.00">133.0</INVTOTAL>
</ORDERSTATUS>
XML;

$xml = simplexml_load_string($string);

echo $xml->INVTOTAL->attributes()->Tax;

这会给你:

15.00

Output

【讨论】:

    【解决方案2】:

    您可以使用attributes 访问此内容。首先选择INVTOTAL,然后选择此attributes,例如税收,这是正常过程

    <?php
    $string = <<<XML
    <ORDERSTATUS>
        <DATE>10/03/17</DATE>
        <INVOICE>abc</INVOICE>
        <INVTOTAL Tax="15.00" Freight="18" SubTotal="100.00">133.0</INVTOTAL>
    </ORDERSTATUS>
    XML;
    
    $xml = simplexml_load_string($string);
    
    echo "DATE:".$xml->DATE."<br>";
    echo "INVOICE:".$xml->INVOICE ."<br>";
    echo "INVTOTAL:".$xml->INVTOTAL ."<br>";
    echo  "Tax:".$xml->INVTOTAL->attributes()->Tax."<br>";
    echo  "Freight:".$xml->INVTOTAL->attributes()->Freight."<br>";
    echo  "SubTotal:".$xml->INVTOTAL->attributes()->SubTotal."<br>";
    

    然后这是输出:

    DATE:10/03/17
    INVOICE:abc
    INVTOTAL:133.0
    Tax:15.00
    Freight:18
    SubTotal:100.00
    

    更多信息

    http://php.net/manual/en/simplexml.examples-basic.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多