我可以将除文件之外的任何内容传递给SimpleXmlIterator吗?

时间:2010-11-05 18:05:50

标签: php xml arrays multidimensional-array simplexml

我正在尝试将XML字符串转换为数组。 SimpleXmlIterator仅接受文件的路径作为参数。有什么方法可以传递字符串吗?

3 个答案:

答案 0 :(得分:2)

根据文件:

SimpleXMLIterator::__construct ( string $data [, int $options [, bool $data_is_url [, string $ns [, bool $is_prefix ]]]] )

因此,这会加载一个字符串:

$it = new SimpleXMLIterator ($xml_string);

这会加载一个文件:

$it = new SimpleXMLIterator ($xml_filename, 0, true);

答案 1 :(得分:1)

ctor signature

SimpleXMLIterator::__construct ( 
    string $data [, 
        int $options [, 
            bool $data_is_url [, 
                string $ns [, 
                    bool $is_prefix ]]]] )

所以您应该可以通过更改$data_is_url来传递字符串和文件:

  

默认情况下,data_is_url为FALSE。使用TRUE指定数据是XML文档的路径或URL而不是字符串数据。

另请参阅first user-contributed comment in the PHP Manual for SimpleXmlIterator for an example how to turn XML into an array。该示例使用了一个文件,但您可以毫无疑问地根据您的需求进行调整。

答案 2 :(得分:1)

你在哪里看到的?默认情况下,SimpleXMLIterator接受一个字符串作为constructor的XML数据...您可以通过将第三个参数设置为true在第一个参数中传递一个文件名,但默认为{ {1}} ...

并且false有一个可选的asXml()参数,但如果您愿意,可以将其关闭,并且它会返回一个字符串......