PHP如何读取XML

时间:2018-01-01 19:42:01

标签: php xml simplexml-load-string

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

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

如何检索这些内在值?

谢谢

2 个答案:

答案 0 :(得分:0)

假设您的xml应以结束</ORDERSTATUS>

结束

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

答案 1 :(得分:0)

您可以使用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