0

個々のファイルに simplexml_load_file を使用すると、正常に機能します。ただし、それらの数が非常に多いため、スクリプトをファイルのバッチに対して実行しようとしたとき.

これが関連する場合に備えて、データベースにロードする 2 種類のログ ファイルがあります。から始まります。もう一方は で始まります。(でもエラーを見ると、同じ構造でもエラーが発生しています。)

<?php
$dir_path = ".";
if ($dir_handler = opendir($dir_path)) {
    while (($sub_dir = readdir($dir_handler)) !== false) {  //reading all sub dir
        if (is_dir($sub_dir)) {
            if (substr($sub_dir,0,6) == "201209") {     //filter only desired sub dir
                $sub_dir_handler = opendir($sub_dir);
                    while($file = readdir($sub_dir_handler)) { //reading files in each 
                                                               //qualified sub dir
                        if (($file != ".") && ($file != "..")) { //except . and ..
                            $xml = simplexml_load_file($file);   // got error on 
                                                                 //the second file
                            if ($xml->getname() != "hash") { // tried to distinct 
                                                            // structure type but error
4

3 に答える 3

1

ばかげた原因を見つけました。

すべてのファイルをサブディレクトリに保持しているため、サブディレクトリをファイル名に連結してパスを見つける必要があります。したがって、エラーはファイルを開けないことが原因です。また、ファイル名をハードコーディングすると個別に開くことができる理由についても説明しています。

エラーがなくなったので、libxml_get_error をスクリプトに適用できません。

:)

于 2012-09-27T04:36:13.977 に答える
1

simplexml_load_file が false (エラー) を返すと思います libxml_get_errors を使用しているものを確認できます

編集: 2 番目のコメントを考慮すると、SimpleXML からファイルにアクセスできないようです...

于 2012-09-26T14:51:06.270 に答える
0

エラーの原因となる2番目のタイプのxmlスキーマをスキップしたいので、使用します

if (!libxml_get_errors())

仕事を続けるために。たくさん、ありがとうございました。

于 2012-09-27T03:02:59.960 に答える