从 MySQL 数据库读取 XML 到 PHP

Read XML from MySQL Database into PHP

我的数据库中存储了以下 XML 结构:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Payouts>
<Range end="1" start="1">900</Range>
<Range end="2" start="2">650</Range>     
<Range end="3" start="3">450</Range>     
<Range end="4" start="4">330</Range>     
<Range end="5" start="5">230</Range>     
<Range end="6" start="6">175</Range>     
<Range end="7" start="7">120</Range>     
<Range end="8" start="8">95</Range>     
<Range end="9" start="9">80</Range>     
<Range end="10" start="10">70</Range>     
<Range end="15" start="11">50</Range>     
<Range end="20" start="16">35</Range>     
<Range end="25" start="21">25</Range>     
<Range end="30" start="26">18</Range>     
<Range end="40" start="31">15</Range>     
<Range end="50" start="41">14</Range>     
<Range end="75" start="51">13</Range>     
<Range end="100" start="76">12</Range>     
<Range end="125" start="100">11</Range>     
<Range end="150" start="126">10</Range>     
<Range end="200" start="151">9</Range>     
<Range end="350" start="201">8</Range>     
<Range end="360" start="351">7</Range>     
<Range end="380" start="361">6</Range>   
<Range end="400" start="381">5</Range>   
<Range end="420" start="401">4</Range>   
<Range end="440" start="421">3</Range>   
<Range end="460" start="441">2</Range>   
<Range end="480" start="461">1</Range>   
<Range end="500" start="481">1</Range>   
<Range end="520" start="501">1</Range>   
</Payouts>

这基本上是一个选项范围。我想筛选这些结果并在最后获取值并开始,然后显示该行的值。

输出将类似于以下内容:

1st - 900 2nd - 650 3rd - 450 4th - 330 5th - 230 6th - 175 7th - 120 8th - 95 9th - 80 10th - 70 11th to 15th - 50 16th to 20th - 35 21th to 25th - 25

我尝试使用以下代码读取 XML 文件:

$payout_xml = $event_details[0]['PAYOUT_DETAILS'];
$xml = new SimpleXMLElement($payout_xml);
echo "The Simple Element is: ".print_r($xml);
echo 'single value: <br />';
echo $xml->Payouts->Range->end; // get single value
echo "end of data";

当我 print_r $payout_xml 我得到以下结果:

SimpleXMLElement Object
(
[Range] => Array
    (
        [0] => 900
        [1] => 650
        [2] => 450
        [3] => 330
        [4] => 230
        [5] => 175
        [6] => 120
        [7] => 95
        [8] => 80
        [9] => 70
        [10] => 50
        [11] => 35
        [12] => 25
        [13] => 18
        [14] => 15
        [15] => 14
        [16] => 13
        [17] => 12
        [18] => 11
        [19] => 10
        [20] => 9
        [21] => 8
        [22] => 7
        [23] => 6
        [24] => 5
        [25] => 4
        [26] => 3
        [27] => 2
        [28] => 1
        [29] => 1
        [30] => 1
    )

)
The Simple Element is: 1 

虽然我没有访问数据。我该怎么做?

end 是属性,不是元素。尝试类似的东西:

echo $sxml->Range . '|' . $sxml->Range['end'] . '|' . $sxml->Range['start'];

输出结果为

900|1|1

函数示例

$xml = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Payouts>
<Range end="1" start="1">900</Range>
<Range end="2" start="2">650</Range>     
<Range end="3" start="3">450</Range>     
<Range end="4" start="4">330</Range>     
<Range end="5" start="5">230</Range>     
<Range end="6" start="6">175</Range>     
<Range end="7" start="7">120</Range>     
<Range end="8" start="8">95</Range>     
<Range end="9" start="9">80</Range>     
<Range end="10" start="10">70</Range>     
<Range end="15" start="11">50</Range>     
<Range end="20" start="16">35</Range>     
<Range end="25" start="21">25</Range>     
<Range end="30" start="26">18</Range>     
<Range end="40" start="31">15</Range>     
<Range end="50" start="41">14</Range>     
<Range end="75" start="51">13</Range>     
<Range end="100" start="76">12</Range>     
<Range end="125" start="100">11</Range>     
<Range end="150" start="126">10</Range>     
<Range end="200" start="151">9</Range>     
<Range end="350" start="201">8</Range>     
<Range end="360" start="351">7</Range>     
<Range end="380" start="361">6</Range>   
<Range end="400" start="381">5</Range>   
<Range end="420" start="401">4</Range>   
<Range end="440" start="421">3</Range>   
<Range end="460" start="441">2</Range>   
<Range end="480" start="461">1</Range>   
<Range end="500" start="481">1</Range>   
<Range end="520" start="501">1</Range>   
</Payouts>';
$sxml = new SimpleXMLElement($xml);
echo $sxml->Range . '|' . $sxml->Range['end'] . '|' . $sxml->Range['start']; // get single value

演示:https://eval.in/583665

或者如果您想遍历所有记录,https://eval.in/583666

foreach($sxml->Range as $range){
     echo $range . '|' . $range['end'] . '|' . $range['start'] . "\n";
}