2016-03-03 137 views
0

我使用了一個類來解析XML文件。該XML文件看起來像這樣:解析XML文檔後循環遍歷關聯數組

<?xml version="1.0" encoding="utf-8"?> 
<user> 
    <name id="1">John Mal</name> 
    <addr>123 N 45</addr> 
    <phone id="5">555.55.222</phone> 
</user> 

解析的結果是一個-associative陣列:

Array (
    [0] => Array (
     [name] => USER 
     [content] => 
     [child] => Array(
      [0] => Array(
       [name] => NAME 
       [attrs] => Array([ID] => 1) 
       [content] => John Mal 
      ) 
      [1] => Array(
       [name] => ADDR 
       [content] => 123 N 45 
      ) 
      [2] => Array(
       [name] => PHONE 
       [attrs] => Array([ID] => 5) 
       [content] => 555.55.222 
      ) 
     ) 
    ) 
) 

我的問題是,如何遍歷數組,並得到裏面的信息。例如,我想在第一個idname -tag等內容中分開一行,因爲之後我想將所有信息寫入文本文件中。怎麼做?任何幫助是非常感激。

回答

0

我會投票給喜歡DOMSimpleXml的強大功能對數組的分析器。如果你有,雖然使用數組...

這是如何在複雜的直接訪問數組中的特定數據:

var_dump($a[0]['child'][0]['content']); 

輸出:

string(8) "John Mal" 

迭代:

foreach ($a as $set) { 

    echo $set['name'] . PHP_EOL; 
    echo $set['content'] . PHP_EOL; 
    echo "----------------" . PHP_EOL; 

    foreach ($set['child'] as $item) { 

     foreach ($item as $key => $value) { 

      echo "$key: $value" . PHP_EOL; 
     } 
    } 
}  

輸出:

USER 
CONTENT 
---------------- 
name: NAME 
attrs: Array 
content: John Mal 
name: ADDR 
content: 123 N 45 
name: PHONE 
attrs: Array 
content: 123.345 

看到它的行動和玩它:https://eval.in/530409

0

解析函數對於你試圖實現的東西並不特別有用。
可能代替SimpleXML感興趣。

<?php 
$user = new SimpleXMLElement(data()); 
echo 'name=', $user->name,' id=', $user->name['id'], PHP_EOL; 
echo 'addr=', $user->addr, PHP_EOL; 
echo 'phone=', $user->phone,' id=', $user->phone['id'], PHP_EOL; 



function data() { 
    return <<< eox 
<?xml version="1.0" encoding="utf-8"?> 
<user> 
    <name id="1">John Mal</name> 
    <addr>123 N 45</addr> 
    <phone id="5">555.55.222</phone> 
</user> 
eox; 
} 
+0

'@ VolkerK'是否有可能得到我張貼的結果的信息? – carl

+0

'@ VolkerK'你的建議很好。我想使用一個類來解析XML文檔。發佈的XML-doc僅僅是一個例子,因爲我正在試圖解析更大更復雜的XML(imsmanifest)。我用的Calss很好,但它給我一個我無法理解的數組。 – carl

+0

這個「類」做別的什麼,但產生這種數組?它是以任何方式,形狀或形式專門爲imsmanifest? – VolkerK