我正在编写程序,它从 $_POST 变量中读取一些 XML,然后使用 PHP XMLReader 进行解析,并将数据提取到数据库中。我正在使用 XMLReader,因为提供的 XML 很可能太大而无法放入内存中。
但是我遇到了一些问题,我的 XML 和基本代码如下:
'<?xml version="1.0"?>
<data_root>
<data>
<info>value</info>
</data>
<action>value</action>
</data_root>'
$request = $_REQUEST['xml'];
$reader = new XMLReader();
$reader->XML($request);
while($reader->read()){
//processing code
}
$reader->close()
我的问题是,如果传递的 XML 没有该<?xml version="1.0"?>
行,则代码将完美运行,但如果我包含它,并且当应用程序进入实时生产环境时将包含它,则$reader->read()
while 循环的代码不起作用并且 XML 不会在 while 循环中解析。
有没有人见过类似的行为或知道为什么会发生这种情况?
提前致谢。