Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как лучше прочитать невалидный, большой XML файл?
 
 автор: а-я   (20.06.2012 в 16:59)   письмо автору
 
 


Warning: DOMDocument::load(): xmlParseEntityRef: no name


Засыпана вся страница. Пользовался другими стандартными библиотеками - все равно результат один и тот же.
Гугл в основном говорит чистить XML-файл перед загрузкой. Но памяти и времени может не хватить на чтение всего файла, заменить все, что надо. и построить объект xml.

2ой день мучаюсь. спасибо заранее.

  Ответить  
 
 автор: cheops   (20.06.2012 в 17:38)   письмо автору
 
   для: а-я   (20.06.2012 в 16:59)
 

Можно при помощи регулярных выражений, вам вся информация нужна или какая-то часть? Прикрепите кусочек.

  Ответить  
 
 автор: а-я   (21.06.2012 в 07:18)   письмо автору
 
   для: cheops   (20.06.2012 в 17:38)
 


<?xml version="1.0" encoding="utf-8" ?>
<entries validOn="2012-06-13T12:00">
    <entry>
        <id>01056190</id>
        <name>OMRON Стаканчик для небулайзеров</name>
        <tradeName>OMRON Стаканчик  & для небулайзеров</tradeName>
        <type>шт.</type>
        <intCode></intCode>
        <producer></producer>
        <country></country>
        <price>610.0</price>
        <amount>2.0</amount>
    </entry>
</entries> 


Пытаюсь прочитать:

<?php
$xml 
simplexml_load_file($url);
?>


Наличие в тексте & (амперсанда) выкидывает предупреждения. Гуглил говорят или &amp; иди в
<CDATA делать текст.

Мне говорили, что стандартные библиотеки умеют работать с XML экономя память, читая не весь файл. Поэтому не пишу велосипед, который будет загружать весь файл в память, заменять (парсить) и на выход давать ассоц. массив.

  Ответить  
 
 автор: Director_Of_Zoo   (23.06.2012 в 21:48)   письмо автору
 
   для: а-я   (21.06.2012 в 07:18)
 

Warning: DOMDocument::load(): xmlParseEntityRef: no name

после этого разве дальше не читает? как при этом парсит данные? приведите код xml - print_r(). У меня были задачи где файлы по десятку мегов парсились с варнингами, но проблем небыло.

  Ответить  
 
 автор: cheops   (24.06.2012 в 07:16)   письмо автору
 
   для: а-я   (21.06.2012 в 07:18)
 

Файл насколько велик? Нельзя его сначала загрузить, преобразовать свободно-расположенные & в &amp;, а потом разобрать?

  Ответить  
 
 автор: а-я   (27.06.2012 в 14:06)   письмо автору
 
   для: cheops   (24.06.2012 в 07:16)
 

В данный момент файл 5 Мб, но таких файлов будет много. И загружать данные просят очень часто. Поэтому ищу шустрый вариант.

Как раз пока оставил вариант:

        file_get_contents();
        str_replace();
        simplexml_load_string();

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования