0

このスクリプトに問題があります。問題は、ノード名のハイフンが xmlreader をスローしていると想定していることです。ファイルは 1GB で、サーバーは 1GB しかないため、simplexml の代わりに xml リーダーを使用する必要があります。とにかく、これは 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> 

次に、これはスクリプトを解析しようとしているスクリプトです。スクリプトを実行すると、1 つの結果が返されます。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