我有这个脚本的问题,问题是我假设它是节点名称中的连字符,它会抛出 xmlreader 我必须使用 xml 阅读器而不是 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 中你可以用大括号括起来,想知道是否存在同样的问题。
听到意味着循环遍历所有 Hotel_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->next(); 一切都很好