我正在尝试使用PHP
将此xml内容http://auroserver.com/sandbox/xml.xml读取为数组我在这里阅读了一些QA,但仍然无法完全实现如何阅读这些文件。
我正在使用此代码:
$url = 'http://auroserver.com/sandbox/xml.xml';
$fileContents = file_get_contents($url);
$fileContents = str_replace(array("\n", "\r", "\t"), '', $fileContents);
$fileContents = trim(str_replace('"', "'", $fileContents));
$Xml = simplexml_load_string($fileContents);
$xml_array = unserialize(serialize(json_decode(json_encode((array) $Xml), 1)));
var_dump($xml_array);
使用上面的代码,它只返回:
array(3) {
["Status"]=>
string(1) "1"
["Message"]=>
array(0) {
}
["Content"]=>
array(0) {
}
}
如何渲染所有xml子值?为此,我需要在xml文件中读取这些值:
<CardNo>6048180000002031</CardNo>
<Status>true</Status>
<Ebalance>92900</Ebalance>
<RewardPoint>6900</RewardPoint>
谢谢
答案 0 :(得分:0)
除非您没有任何特定原因,否则无需将XML转换为数组。如果您的目标只是获取上述值,则可以使用XPath查询直接从XML中获取它们:
$url = 'http://auroserver.com/sandbox/xml.xml';
$fileContents = trim(file_get_contents($url));
$xml = new SimpleXMLElement($fileContents);
$table = $xml->xpath('//NewDataSet/Table')[0]; # 0 = first item
echo "CardNo: " . $table->CardNo, PHP_EOL;
echo "Status: " . $table->Status, PHP_EOL;
echo "Ebalance: " . $table->Ebalance, PHP_EOL;
echo "RewardPoint: " . $table->RewardPoint, PHP_EOL;
输出:
CardNo: 6048180000002031
Status: true
Ebalance: 92900
RewardPoint: 6900