Parsing Xml

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем VikaR, 17 май 2011.

  1. VikaR

    VikaR Гость

    Здравствуйте.

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

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

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

    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
    Web Team

    Регистрация:
    12 сен 2010
    Сообщения:
    694
    Симпатии:
    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 Гость

    Есть путь еще проще - прочитать файл в память как текст, подправить инвалидніе символы, а затем передать парсеру.
    Вот код
    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(); }
    }
     
Загрузка...

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