Вопрос по обработке xml

tikhon_shw

Новичок
понял
теперь считает но вывалиевает
Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: XML declaration allowed only at the start of the document in Entity, line: 157 in C:\apache\localhost\www\XML\index.php on line 105

Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Extra content at the end of the document in Entity, line: 158 in C:\apache\localhost\www\XML\index.php on line 105

в этой строке $dom->loadXml($data);
 

A1x

Новичок
строка <?xml version="1.0" encoding="windows-1251" ?>
должна быть в самом начале документа - т.е. перед ней не должно быть ничего, ни пробелов ни переводов строк
 

mity

Новичок
В начале, один раз
class MyDOMDocument extends DOMDocument {
Описание класса
}




цикл
PHP:
for($n=0;$n<10;$n++){
  $dom = new MyDOMDocument; 

  $data=чемуто
  $dom->loadXml($data); 

  echo "<pre>"; 
   $ar=$dom->toArray();
    echo $ar["Файл"]["ИмяФайла"]."  ".$ar["Файл"]["ЗаголовокФайла"]["ВерсияФормата"];
  echo "</pre>";
};
И никаких include в циклах
 

tikhon_shw

Новичок
в идеале часть кода сканирует директории находит файлы xml
далле циклом открываю
$arr = file ('./reestr_xml/upload/'.$raion.'/'.$file.'/'.$file_strah.'/'.$file_strah_date);

foreach($arr as $zaz => $a)
{ $data .= htmlspecialchars($a); }

$data='содержание открытого файла'

очень долго выполняется! всего 800 файлов
 

mity

Новичок
Зачем ??
$arr = file ('./reestr_xml/upload/'.$raion.'/'.$file.'/'.$file_strah.'/'.$file_strah_date);

зачем ??
foreach($arr as $zaz => $a)
{ $data .= htmlspecialchars($a); }

И что после htmlspecialchars loadXml работает ???

Чем Вас не устраивает??
PHP:
 htmlspecialchars(str_replace(array("\r\n","\r","\n"),"",file_get_contents("name.xml")))
 

tikhon_shw

Новичок
да все работает
сейчас попробую ваш вариант

как уваличить скорость работы?

-~{}~ 26.04.10 12:34:

если есть возможность подскажите пожалуйста как можно увеличить скорость работы обработки файлов

№п.п кол время кол-во
во о. работы символов имя файла
с файл. в файле
262 12 0.1499 34217 pfr-700-y-2008-org-030-004-013159-dck-00027-dpt-000000-dck-00000.xml
263 199 73.8321 556531 pfr-700-y-2008-org-030-004-013159-dck-00028-dpt-000000-dck-00000.xml
264 64 2.1636 182212 pfr-700-y-2008-org-030-004-013159-dck-00029-dpt-000000-dck-00000.xml
265 50 1.46 176196 pfr-700-y-2008-org-030-004-013159-dck-00030-dpt-000000-dck-00000.xml
266 62 2.7859 224324 pfr-700-y-2008-org-030-004-013159-dck-00031-dpt-000000-dck-00000.xml
267 199 67.1575 487467 pfr-700-y-2008-org-030-004-013159-dck-00032-dpt-000000-dck-00000.xml
268 199 66.032 486385 pfr-700-y-2008-org-030-004-013159-dck-00033-dpt-000000-dck-00000.xml
269 199 66.2103 489069 pfr-700-y-2008-org-030-004-013159-dck-00034-dpt-000000-dck-00000.xml
270 199 65.6184 487317 pfr-700-y-2008-org-030-004-013159-dck-00035-dpt-000000-dck-00000.xml
271 199 68.2198 490437 pfr-700-y-2008-org-030-004-013159-dck-00036-dpt-000000-dck-00000.xml
272 199 66.9491 486975 pfr-700-y-2008-org-030-004-013159-dck-00037-dpt-000000-dck-00000.xml
273 199 67.7861 487073 pfr-700-y-2008-org-030-004-013159-dck-00038-dpt-000000-dck-00000.xml
274 199 66.3721 490095 pfr-700-y-2008-org-030-004-013159-dck-00039-dpt-000000-dck-00000.xml
275 199 66.986 485827 pfr-700-y-2008-org-030-004-013159-dck-00040-dpt-000000-dck-00000.xml
276 199 65.7668 488041 pfr-700-y-2008-org-030-004-013159-dck-00041-dpt-000000-dck-00000.xml
277 43 0.7719 107620 pfr-700-y-2008-org-030-004-013159-dck-00042-dpt-000000-dck-00000.xml
278 1 0.0268 4543 pfr-700-y-2008-org-030-004-013159-dck-00043-dpt-000000-dck-00000.xml

-~{}~ 26.04.10 12:38:

как-то не симптоматично сохранилось
262 - порядковый номер
12 - нужное поле в фале xml
0.1499 - время работы с данным файлом
34217 - количество символов в файле
pfr-700-y-2008-org-030-004-013159-dck-00027-dpt-000000-dck-00000.xml - имя файла
 

mity

Новичок
Вы пишите медленно работает.
Где медленно работает? На локальной машине, на загруженом сервере хостинга?

Смотрите что у Вас сейчас происходит, сначала $dom->loadXml($data); загружает данные в своё внутренне представление, затем toArray переконвертирует это внутренне представление в массив.

Для начала попробуйте не вызывать toArray, а искать нужные поля через getElementsByTagName.

Хотите реально ускорения, пишите свой XML парсер, желательно на языке низкого уровня, например C++.
 

tikhon_shw

Новичок
все работает на серваке (проц ксенон 2,8 2 шт) работает в локалке
уже написал
по времени через дом Скрипт выполнен за 11752.9883 сек.
через мое творение (тот же объем файлов) Скрипт выполнен за 123.1034 сек.
 
Сверху