1

こんにちは、次のような情報を含む XML ファイルがあります。

<root>
 <library>
   <name>TestName1</name>
   <location>TestLocation1</location>
 </library>
 <library>
   <name>TestName2</name>
   <location>TestLocation2</location>
 </library>
 <book>
   <name>Book1</name>
   <author>Author1</author>
 </book>
 <book>
   <name>Book2</name>
   <author>Author2</author>
 </book>
</root>

私がしたことは、情報の配列を格納する配列を作成することでした。ただし、私の問題は、本または図書館のみを返そうとすることにあります。

$xml = "libraries.xml";
$array_libraries = array();
$library = simplexml_load_file($xml);

foreach($library as $get_library) {
$name = $get_library->name;
$location = $get_library->location;
array_push($array_albums, array($name, $location));
}

可能であれば、書籍とライブラリを同じファイルに保存したいのですが、ライブラリを配列に入れたいだけです。よろしくお願いします:-)

4

3 に答える 3

2

XML 全体ではなく、ライブラリだけをループする必要があります。

変化する:

foreach($library as $get_library) {

foreach($library->library as $get_library) {

補足として、SimpleXML は XML を操作するのに最適ではありません。代わりにDOMDocumentの使用を検討してください。

于 2012-10-19T15:17:58.313 に答える
0

配列を定義し、

$array_libraries = array();

次に、別の配列をプッシュします

array_push($array_albums, array($name, $location));

以前に宣言された配列をプッシュしてみてください。

array_push($array_libraries, array($name, $location));
于 2012-10-19T15:17:48.017 に答える
0

これは役に立つかもしれません

$xml = "libraries.xml";
$array_libraries = array();
$array_albums = array();
$library = simplexml_load_file( $xml );

foreach( $library as $get_library => $x ) {
    $name = $x->name;
    $location = $x->location;
    if ( $get_library === 'library' ) {
        array_push( $array_libraries, array( $name, $location ) );
    }
    if ( $get_library === 'book' ) {
        array_push( $array_albums, array( $name, $location ) );
    }
}

ライブラリのみが必要な場合は、それのみを保持し、他のライブラリを削除/コメントします。両方が必要な場合は、既にサンプルが機能しています。

さよなら

于 2012-10-19T15:30:15.780 に答える