简单XML&;PHP

简单XML&;PHP,php,html,xml,simplexml,Php,Html,Xml,Simplexml,嘿,我有一个XML文件,其中包含一些类似于以下内容的信息: <root> <library> <name>TestName1</name> <location>TestLocation1</location> </library> <library> <name>TestName2</name> <location>TestLocati

嘿,我有一个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>
如果可能的话,我想将书籍和图书馆保存在同一个文件中,但我只想将图书馆放入数组中,提前谢谢:-)

您定义了一个数组

$array_libraries = array();
然后推入另一个数组

array_push($array_albums, array($name, $location));
尝试推入以前声明的数组:

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

您将需要循环使用库,而不仅仅是整个XML

更改:

foreach($library as $get_library) {

顺便说一句,SimpleXML并不是处理XML的最佳工具。转而考虑使用。

这可能很有用

$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 ) );
    }
}
如果您只需要这些库,那么只保留If并删除/注释另一个,如果您同时需要这两个库,那么您已经有了一个工作示例


再见

对于DOM而不是SimpleXML的偏好在很大程度上取决于品味。在我看来,对于简单的只读操作,SimpleXML按照它在tin上所说的做。
foreach($library->library as $get_library) {
$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 ) );
    }
}