使用ID值将XML解析为PHP


Parse XML to PHP using ID value

如何通过调用xml值的"columnId"而不是数组中的位置来用php回显xml值?(阵列很长)

以下是xml:的示例

<Data>
   <Value columnId="ITEMS_SOLD">68</Value>
   <Value columnId="TOTAL_SALES">682</Value>
   <Value columnId="SHIPPING_READY">29</Value>
   ...
</Data>

下面的php给了我所有的值:

$url = 'XXX';
$xml = file_get_contents($url);
$feed = simplexml_load_string($xml) or die("Error: Cannot create object");
foreach($feed->Data->Value as $key => $value){
   echo $value; 
}

我希望能够在我的文档中使用这样的东西:

echo $feed->Data->Value['TOTAL_SALES'];

谢谢你的帮助。

echo $feed->Data->Value[1];

我为您的解决方案提供了另一种方法。您可以将xml对象转换为数组,并使用它进行进一步的处理。试试这个代码:

<?php
$url = 'XXX';
//Read xml data, If file exist...
if (file_exists($url)) {
        //Load xml file...
    $xml = simplexml_load_file($url);
        $arrColumn = array();//Variable initialization...
    $arrFromObj = (array) $xml;//Convert object to array...
    $i = 0;//Variable initialization with value...
    //Loop until data...
    foreach($xml AS $arrKey => $arrData)    {
        $columnId = (string) $arrData['columnId'][0];//array object to string...
        $arrColumn[$columnId] = $arrFromObj['Value'][$i];//assign data to array...
        $i++;//Incremental variable...
    }
} else {//Condition if file not exist and display message...
    exit('Failed to open file');
}
?>

以上代码将结果存储到数组变量$arrColumn中,结果为:

Array
(
    [ITEMS_SOLD] => 68
    [TOTAL_SALES] => 682
    [SHIPPING_READY] => 29
)

希望这对你有很大帮助!

使用XPath。SimpleXML和DOM支持它,但SimpleXML有一些限制(它只能获取节点列表)。

SimpleXML

$feed = simplexml_load_string($xml);
var_dump(
  (string)$feed->xpath('//Value[@columnId = "TOTAL_SALES"]')[0]
);

输出:

string(3) "682"

DOM

$document = new DOMDocument();
$document->loadXml($xml);
$xpath = new DOMXpath($document);
var_dump(
  $xpath->evaluate('string(//Value[@columnId = "TOTAL_SALES"])')
);

输出:

string(3) "682"