0

我有这个脚本的问题,问题是我假设它是节点名称中的连字符,它会抛出 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(); 一切都很好

4

0 回答 0