2

これが私の最初の質問であるため、私の質問が意味をなさない場合は非常に申し訳ありませんが、私はしばらくの間投稿された質問を調べてきました。

右私はのXML構造を持っています

<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を解析して、次のような理想的な配列を生成する関数が必要です。

array(
  "123456" => 
  array(
    "id" => "2345",
    "name" => "UK House prces",
  ),
  array(
    "id" => "3456",
    "name" => "Property Market Surveys",
  )
);

次に、配列のデータを抽出して、親子関係を持つテーブルに挿入できる必要があります。

この質問を完了するためにさらに情報が必要な場合はお知らせください。

お時間をいただき、誠にありがとうございます。

よろしく。

4

3 に答える 3

4

なぜあなたはそれが必要なのですか?単純な方法でXMLツリーにアクセスする場合(配列と同様ですが、配列表記は同じ要素名の兄弟が存在する場合にのみ使用され、それ以外の場合はプロパティ表記が使用されます)、SimpleXMLを使用できます。

于 2010-06-21T16:41:10.730 に答える
3

この関数は機能しているようです。phpxmlを配列にグーグルで検索すると、関連性の高い結果が大量に返されます。ここに良い出発点があります:( http://snipplr.com/view/17886/xml-to-array/から供給)

パラメータとしてXMLを指定するだけで、配列が返されます。

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;
}
于 2010-06-21T17:16:53.863 に答える
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 ;
}
于 2014-08-23T01:10:32.110 に答える