无法读取数组

时间:2015-06-03 17:45:43

标签: php json xml

我正在尝试使用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>

谢谢

1 个答案:

答案 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