2012-08-15 2 views
0

XML 노드 구조가 작동하는 방식, 여러 번 발생하는 부모의 자식 요소가 여러 개 있습니다. 나는 어린이 요소에 접근 할 수 있지만 각 부모 중 첫 번째 요소 만 가져올 수 있습니다. 또한 children 요소의 데이터를 MySQL에 삽입하려고합니다. 나는 첫 번째 요소 다음에 어떤 자식 요소에도 접근 할 수 없다. count()을 되풀이 할 때, 나는 각 reoccurring 부모에 대한 children 요소의 총 개수를 얻을 수 있지만 그 데이터로 작업 할 수없는 것 같습니다. 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 서버일지도 모른다고 생각한다. (내가 틀릴 수도 있지만, 빠른 검색에서 그것에 대해 아무것도 보지 못했다.) ... –

+0

여기서 일하려고하는 것처럼 약간의 샘플 XML 배치를 권장한다. –

+0

@ Brett I 걱정되는 데이터는 문자 스트링 일 뿐이므로 좋을 것이라고 생각합니다. 또한 부모의 첫 번째 자식에서 문자열을 삽입 할 수 있습니다. – malea78478

답변

0

개봉 누락 후지산 노드에서 for 루프 :

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

관련 문제