2012-08-15 48 views
0

我的XML節點結構是如何工作的,是否有多個也是多次出現的父級子元素。我能夠找到孩子的元素,但只有每個父母的第一個。我也試圖將數據插入到MySQL元素中。我似乎無法訪問第一個之後的任何子元素。當我回應count()時,我可以得到每個重複發生的父項的子元素總數,但似乎無法處理這些數據。解析XML對我來說相當新鮮,而且我的PHP有點生疏,所以請原諒我。我沒有得到什麼?在解析XML時,無法訪問其父級的第一個子節點以上的內容

注意:我關心的數據在mt節點中。 mt節點的直接父節點是mi節點。

$string = file_get_contents('file1.xml'); 
$xml = new SimpleXMLElement($string); 

foreach ($xml->md as $mt_tag) { 
    if (isset($mt_tag->mi->mt)) { 
     $query = "INSERT INTO xmlData(
       xml_data 
       ) VALUES (
       '{$mt_tag->mi->mt}' 
       )"; 
     mysql_query($query, $connection); 
     echo count($mt_tag->mi->mt); 
     echo "<br />"; 
    } else { 
     echo "<p>Creation Failed.<p>"; 
     echo "<p>" . mysql_error() . "</p>"; 
    } 
} 
+0

您確定xmlData()在MySQL中受支持嗎?我認爲這可能只是SQL Server(我可能是錯的,但在快速搜索中沒有看到它的任何內容)... – 2012-08-15 08:49:56

+0

我還建議您在此處嘗試使用一些示例XML – 2012-08-15 08:51:03

+0

@ Brett I認爲它應該沒問題,因爲我關心的數據只是一串字母字符。我也可以從父項的第一個子項插入字符串,之後就不會有任何字符串。 – malea78478 2012-08-15 09:25:19

回答

0

特殊照顧缺少的MT節點上循環:

foreach ($xml->md as $md_tag) { 
     if (isset($md_tag->mi->mt)) { 

       foreach ($md_tag->mi->mt as $mt) { 
        //do something 
       } 
     } 
} 

請一定要改變這裏面是不一致的

foreach ($xml->md as $mt_tag) { 

foreach ($xml->md as $md_tag) { 
+0

謝謝你,完美的工作!我一直在孩子的節點上絆倒。我一直在試圖弄清楚這一點,這很簡單。 – malea78478 2012-08-15 17:26:44