2010-06-21 2 views
2

내 질문이 내 첫 번째 질문이므로이 질문이 의미가 없으면 대단히 죄송합니다. 그러나 질문을 잠시 게시했습니다. .PHP에서 DOMDOcument를 사용하여 XML을 구문 분석하고 트리 구조 배열을 반환

바로 내가 함수가 위의 XML을 통해 분석하고이

array(
    "123456" => 
    array(
    "id" => "2345", 
    "name" => "UK House prces", 
), 
    array(
    "id" => "3456", 
    "name" => "Property Market Surveys", 
) 
); 
같은 것을보고 idealy 배열을 생성 할 것

<category> 
    <id>123456</id> 
    <name>Sales</name> 
<categories> 
    <category> 
    <id>2345</id> 
    <name>UK House prices</name> 
    </category> 
    <category> 
    <id>3456</id> 
    <name>Property Market Surveys</name> 
    </category> 
</categories> 

의 XML 구조를 가지고

그러면 배열의 데이터를 추출하여 부모 자식 관계가있는 테이블에 삽입 할 수 있어야합니다.

이 질문을 작성하는 데 추가 정보가 필요한 경우 알려주십시오.

시간 내 주셔서 감사합니다.

감사합니다.

답변

3

왜 필요한가요? XML 트리에 간단한 방식으로 액세스하려는 경우 (배열과 유사하지만 배열 표기법은 동일한 요소 이름을 갖는 형제가있을 때만 사용됩니다. 그렇지 않으면 속성 표기법이 사용됨) SimpleXML을 사용할 수 있습니다.

+0

, 늦게 답장을 보내 주셔서 미안하지만 .... 그래 네 말이 내가 SimpleXML을를 사용하는 관리 않았다하고 있으며 좀 아래에 설명 된 것과 유사한 기능을 생성 Chief17. xml을 내가 원하는 방식으로 배열로 변환 할 수있었습니다. 그 배열을 사용하여 테이블에 데이터를 삽입하려고 시도했지만 그 테이블 내에서 상위 하위 관계가 발생합니다. 어쨌든 당신의 시간과 노력에 대해 어쨌든 대단히 감사합니다. 너희들은 놀랍다. ... – bharath

3

이 기능이 작동하는 것 같습니다. Google php xml to array을 사용하면 좋은 결과를 얻을 수 있습니다.

그냥 매개 변수로 XML을 지정 (http://snipplr.com/view/17886/xml-to-array/에서 공급) 그리고 배열 반환 : 여기에 좋은 출발점이 될 것입니다 이름 (노드의 더 나은 인덱싱 마지막 솔루션을 다시 쓰기

function xml2array($xml,$recursive = false) { 

if (!$recursive) { $array = simplexml_load_string ($xml); } 
else { $array = $xml ; } 

$newArray = array(); 
$array = $array ; 

foreach ($array as $key => $value) { 
    $value = (array) $value; 

    if (isset($value[0])) { $newArray[$key] = trim($value[0]); } 
    else { $newArray[$key][] = XML2Array($value,true) ; } 
} 

return $newArray; 
} 
+0

시간 내 주셔서 대단히 감사합니다. 이와 비슷한 기능을 만들었지 만 내가 원했던 방식. 나는 내가 원했던 것을 가지고있다. .. 나머지가 어떻게되는지 보아라. 힘내 친구 야. – bharath

0

을) 및 매개 변수의 수 감소 : 안녕

function xml2Array($xml) 
{ 
    $xml = (array)(is_string($xml) ? simplexml_load_string($xml) : $xml) ; 

    $parse = array() ; 
    foreach($xml as $key => $value) 
    { 
     $parse[$key] = is_string($value) 
      ? trim($value) 
      : $this->xml2Array($value) 
     ; 
    } 

    return $parse ; 
} 
관련 문제