1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Parsing Xml

Тема в разделе "Web - программирование", создана пользователем VikaR, 17 май 2011.

  1. VikaR

    VikaR Гость

    Репутация:
    0
    Здравствуйте.

    Нужно распарсить ХМЛ файл, но файл с ошибкой. Как исправить ошибку, а затем парсить.

    Переписываать файл НЕЛЬЗЯ

    Использую такой код

    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

    var readok = false;
    xmlDoc.async = "false";
    readok = xmlDoc.load(programfolder + "client_state.xml");

    if (readok){ здесь парсинг

    Но readok содержит ошибку -1072896760 - недопустимый символ. Это не ASCII символ. Так вот как его выбросить, а затем продолжить парсить.

    Спасибо

    PS. Сам файл здесь http://depositfiles.com/files/siu4d6bug
     
  2. 1ive

    1ive Well-Known Member

    Репутация:
    0
    Регистрация:
    12 сен 2010
    Сообщения:
    621
    Симпатии:
    0
    Если хочешь сделать всё проще - предлагаю обходной путь)

    Simple HTML DOM Parser is designed for reading and editing HTML but it works fine with XML files
    Вот сайт проекта http://sourceforge.net/projects/simplehtmldom/

    С использованием этого класса, парсер будет выглядеть примерно так:

    HTML:
    $xml = file_get_html('http://www.google.com/');
    foreach($xml->find('span') as $element)
    echo $element;
    В документации можно посмотреть как спарсить совершенно любой элемент XML
    Сам им часто пользуюсь.
     
  3. VikaR

    VikaR Гость

    Репутация:
    0
    Есть путь еще проще - прочитать файл в память как текст, подправить инвалидніе символы, а затем передать парсеру.
    Вот код
    if (xmlDoc.parseError.errorCode == -1072896760){
    var filename = programfolder + "client_state.xml";
    try{
    var xmlfile = fso_OpenTextFile(filename.substring(8), 1); //1 read
    var filecontent = xmlfile.ReadAll();
    xmlfile.Close();
    // здесь убираются инвалидніе символы (эта часть программы, думаю никого не интересует)
    readok = xmlDoc.loadXML(filecontent);
    }
    catch (e){}
    finally { xmlfile.Close(); }
    }
     
Загрузка...

Поделиться этой страницей