2017-01-07 5 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> 

2つの名前の要素( "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に最初のname要素の子要素に「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

なぜ1人の名字が2つあるのでしょうか?他の人のために、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

関連する問題