我有这个脚本的问题,问题是我假设它在节点名称中的连字符它抛出xmlreader我必须使用xml reader而不是simplexml,因为文件是1gb而我们的服务器只有1gb,无论如何这是xml:
<dataroot>
<Hotel_All_Active_x0020_08-29-12>
...................
</Hotel_All_Active_x0020_08-29-12>
<Hotel_All_Active_x0020_08-29-12>
...................
</Hotel_All_Active_x0020_08-29-12>
</dataroot>
然后这是我试图解析的脚本如果我运行脚本我得到一个结果,我知道我可以在xml上执行转换但是因为我们可能每隔一周要经历这个过程我想要保持尽可能简单和直接,我知道在简单的xml中你可以用大括号括起来,并想知道是否存在同样的问题。
听到代码意图循环遍历所有酒店_All_Active_x0020_08-29-12:
$reader = new XMLReader();
$reader->open("Hotel_All.xml");
$dom = new DomDocument();
while ($reader->read() && $reader->name !== 'Hotel_All_Active_x0020_08-29-12');
while ($reader->name === 'Hotel_All_Active_x0020_08-29-12')
{
$node = new SimpleXMLElement($reader->readOuterXml());
$nodename = $node->name;
$reader->next('Hotel_All_Active_x0020_08-29-12');
}
但是它永远不会移动到下一个元素,是否有一种简单的方法来处理xmlreader中的非法字符,或者是使用xsl来更改名称的唯一选项?
这不是完整的脚本,但我知道直到$ reader-&gt; next();一切都很好