1

私はいくつかのxmlファイルをロードしていますsimplexml_load_string

私のコードは

$xml = simplexml_load_string($fileContent, NULL, LIBXML_NOCDATA);

そしてそれはうまくいきますが:

<photos>
    <photo>8894133.jpg</photo>
    <photo>8892133.jpg</photo>
</photos>

としてロードされます

  'photos' => 
    array (size=1)
      'photo' => 
        array (size=2)
          0 => string '8894133.jpg' (length=61)
          1 => string '8894133.jpg' (length=61)

次のような1つの「行」のみのデータ:

<photos>
    <photo>8894133.jpg</photo>
</photos>

のようにロードされます

'photos' => 
    array (size=1)
      'photo' => string '892133.jpg' (length=61)

そして、それは配列の同じ構造ではありません。1つ目はindex>array>index>array>index>data、2つ目はindex>array>index>data

単一のデータが文字列としてではなく、1つの要素配列としてロードされるようにロードを構成することは可能ですか?2番目の結果は

  'photos' => 
    array (size=1)
      'photo' => 
        array (size=1)
          0 => string '8894133.jpg' (length=61)
4

1 に答える 1

0

ノードから直接データを取得するには、xml-Object を使用する必要があります。ルートノードから反復する理由はありません。

最初にファイルをロードします:

// create xml-object from file
if(!$xml = simplexml_load_file($xmlFile)) {
   $this->addErrorMessage('XML Objekt could not be loaded from file:'.$xmlFile);
}

次に、ノードから直接データを取得します。

//save Data from xml to whatever
foreach ($xml->photo as $newPhoto){
    // create and return object with data
    $myData = $newPhoto;
}
于 2014-12-23T15:13:55.453 に答える