2017-01-07 9 views
-2

XmlExtractor을 사용하여 XML 파일을 PHP의 배열로 구문 분석합니다.PHP가 XmlExtractor를 사용하여 XML을 배열로 구문 분석 - 버그

불행히도 반복되는 배열 요소에는 버그가 있습니다. 다음은 예시적인 입력 Earth.xml이다 :

<earth> 
    <people> 
     <person> 
      <name id = "1"> 
       <first>Paul</first> 
       <last>Warelis</last> 
      </name> 
      <name id = "2"> 
       <first>George</first> 
       <last>Stein</last> 
      </name> 
      <gender>Male</gender> 
      <skill>Javascript</skill> 
      <skill>PHP</skill> 
      <skill>Beer</skill> 
     </person> 
    </people> 
</earth> 

두 명 요소 ("ID = 1" "한"ID = 2 "와 다른 하나)가있다. 이 전체 XML을 배열로 바꾸고 싶습니다. 여기에 대한 코드는 다음과 같습니다 그러나

$source = new XmlExtractor("earth", $file); 
     foreach ($source as $people) { 
     $result = $people->export(true); 
     } 

     echo '<pre>'; 
     print_r($result); 
     echo '</pre>'; 

,이 경우 XmlExtractor의 첫 번째 이름 요소의 하위 요소로 "ID = 2"로 이름 요소를 설정합니다. 출력은 다음과 같습니다.

Array 
(
    [people] => Array 
     (
      [person] => Array 
       (
        [name] => Array 
         (
          [id] => 1 
          [first] => Paul 
          [last] => Warelis 
          [name] => Array 
           (
            [id] => 2 
            [first] => George 
            [last] => Stein 
           ) 

         ) 

        [gender] => Male 
        [skill] => Array 
         (
          [0] => Javascript 
          [1] => PHP 
          [2] => Beer 
         ) 

       ) 

     ) 

) 

XmlExtractor의 저자는 저에게 버그임을 확인했습니다. 그러나, 불행히도 프로젝트는 더 이상 유지되지 않고 지금까지 문제를 직접 해결할 수 없었습니다. 누구든지이 문제를 조사하고 문제의 원인을 파악할 수 있습니까?

작성자는 솔루션을 패키지에 병합하여 다른 사용자도 혜택을 얻을 수 있음을 확인했습니다.

감사합니다. pancid

답변

0

한 명당 이름과 성이 왜 다른가요? 다른 사용자의 경우 XML 파일에 다른 '사람'태그를 추가하면 다음과 같이됩니다.

<earth> 
    <people> 
     <person> 
      <name id = "1"> 
       <first>Paul</first> 
       <last>Warelis</last> 
      </name> 
      <gender>Male</gender> 
      <skill>Javascript</skill> 
      <skill>PHP</skill> 
      <skill>Beer</skill> 
     </person> 
     <person> 
      <name id = "2"> 
       <first>George</first> 
       <last>Stein</last> 
      </name> 
      <gender>Male</gender> 
      <skill>AngularJS</skill> 
      <skill>PHP</skill> 
      <skill>Beer</skill> 
     </person> 
    </people> 
</earth> 
+0

논리적으로는 올바른 것입니다. 그러나 제공된 xml은 코드의 버그를 설명하기위한 예일뿐입니다. 요소의 이름이 무엇인지는 중요하지 않습니다. 문제는 항상 동일합니다. 이 문제를 해결할 수있는 유일한 방법은 https://github.com/pwarelis/XmlExtractor/tree/master/src에서 XmlExtractor의 소스 코드를 수정하는 것입니다. – pancid