Ошибка Sax-парсера

Тема в разделе "Lotus - Программирование", создана пользователем -, 6 янв 2008.

  1. Гость

    Здравствуйте..Подскажите, пожалуйста, как точно определить строку или символ в HTML-коде, из-за которого SAX-парсер не признает документ как Well Formed XML..Короче, каким образом точно установить место, в котором имеется ошибка..Все, кто отзовется, буду весьма признателен.
     
  2. Гость

    ПОСТКРИПТУМ: еще один момент: будьте добры, подкиньте пожалуйста пример XSL-таблицы для преобразования Domino XML в HTML
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Печатай в errorhandler'e лог от парсера (SAXParser.Log)
    В нём указывается, где случилась ошибка.

    XSL есть в sandbox'е на официальном лотусном сайте.
    Я оттуда брал, после некоторой доработки заработал.
    Если надо, могу завтра выложить...
     
  4. Гость

    Большое спасибо. Если не трудно, выложи готовый XSL Насчет лога: дело в том, что сообщение выводится следующее:

    <?xml version='1.0'?>
    <SAXParserLOg>
    <fatalerror source='inpu'>Unable to recognize or load XML reformatter input character set</fatalerror>
    <error>SAX parser operation failed</error>
    </SAXParserLog>

    Вот и все, что errorhandler считает нужным мне сообщить. Ничего более конкретного, типа названия незакрытого тега, нету.
     
  5. Гость

    И еще один момент. Я уже запостил этот вопрос, никто не ответил, может, ты подскажешь - как скачать веб-страницу, защищенную ssl-протоколом ? Дело в том, что вызов GetDocumentByURL, запрашивающий такую страницу, не удается, видимо, происходит какая-то серверная ошибка.
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Выложу вечером или завтра, нет на работе этого файлика оказывается.
    Как скачать страницу - не знаю к сожалению.

    Насчёт XML - посмотри наличие рестриктед символов в HTML'ке.
    Типа "<", ">" и т.д.
     
  7. Гость

    Хорошо, большое спасибо. Тогда я изложу проблему во всей широте и попрошу профессионального совета, может, предложишь что-нибудь, до чего я еще не додумался. Дело в том, что сейчас передо мной стоит задача - создание базы для скачивания веб-страниц, вот сейчас и пишу агент для для этого дела. Известно что совокупность данных Domino, которую представляет из себя скачанный документ, не включает изоборажений, а лишь хранит ссылки на их размещение на запрошенном сервере в поле $ImageList. Мой замысел был таков - создать еще ряд запросов по этим ссылкам, получить соответствующее количество документов с изображениями и таким образом сформировать новые ссылки, потом распарсить Mime-часть главного документа, то есть исходный HTML-код страницы и в процессе парсинга заменить все существующие ссылки на новые. Проблема возникла тогда, когда оказалось, что далеко не все веб-страницы удовлетворяют правилам XML и правильно оформлены (известно, что парсер предпочитает не иметь дело с не Well Formed XML-документами)..Тогда появилась другая идея - экспортировать данные Domino в DXML, потом прогнать через такую XSLT, чтобы на выходе трансфрмера иметь нормальный HTML, который можно упаковать в RTF и получить желаемый документ. Но здесь своя заморочка - как в XSL-табличке предусмотреть все возможные теги DXML и описать их, ведь я не знаю заранее, как будет оформлена страница, которую предстоит отработать. Короче, стою на распутье и уже начинаю склоняться к первому варианту - решению *цензура*лемы незакрытых тегов, только все равно на ум ничего не приходит..Если есть какие-нибудь соображения - буду рад.
     
  8. Гость

    Хорошо, большое спасибо. Тогда я изложу проблему во всей широте и попрошу профессионального совета, может, предложишь что-нибудь, до чего я еще не додумался. Дело в том, что сейчас передо мной стоит задача - создание базы для скачивания веб-страниц, вот сейчас и пишу агент для для этого дела. Известно что совокупность данных Domino, которую представляет из себя скачанный документ, не включает изоборажений, а лишь хранит ссылки на их размещение на запрошенном сервере в поле $ImageList. Мой замысел был таков - создать еще ряд запросов по этим ссылкам, получить соответствующее количество документов с изображениями и таким образом сформировать новые ссылки, потом распарсить Mime-часть главного документа, то есть исходный HTML-код страницы и в процессе парсинга заменить все существующие ссылки на новые. Проблема возникла тогда, когда оказалось, что далеко не все веб-страницы удовлетворяют правилам XML и правильно оформлены (известно, что парсер предпочитает не иметь дело с не Well Formed XML-документами)..Тогда появилась другая идея - экспортировать данные Domino в DXML, потом прогнать через такую XSLT, чтобы на выходе трансфрмера иметь нормальный HTML, который можно упаковать в RTF и получить желаемый документ. Но здесь своя заморочка - как в XSL-табличке предусмотреть все возможные теги DXML и описать их, ведь я не знаю заранее, как будет оформлена страница, которую предстоит отработать. Короче, стою на распутье и уже начинаю склоняться к первому варианту - решению *цензура*лемы незакрытых тегов, только все равно на ум ничего не приходит..Если есть какие-нибудь соображения - буду рад.
     
  9. Sandr

    Sandr Гость

    м... наверное так не выйдет... все предусмотреть у Вас не выйдет... Я тока не понял, зачем гонять туда сюда весь код, а не сохранять в первоначальном виде... ссылки на картинки можно и в ХТМЛе подменить...
     
  10. Гость

    Если Вы подскажете мне, как подменить в HTML ссылки на картинки, не прибегая к парсингу, я упаду со стула от радости, а потом еще десять раз ударюсь глупой головой о стенку.

    Кстати: А если вы имеете в виду операции со строками и истязание RichTextNavigator, то, по-моему, дело это довольно мутное и ненадежное
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Программер
    Взять html как текст и тупо подменить.
    Не брать в голову всю структуру, а тупо по тегу "image" или как он там :)
     
  12. Гость

    Это все бы ничего, да только в этом случае я не представляю себе, как выкусить из текста все остальные атрибуты элемента img, это достаточно сложный и недостаточно надежный механизм, учитывая, что в html-документе допускается любое кол-во пробелов, а стринг нужно задавать точно..При этом сивол "img" часто встречается в url и вообще в значениях параметров. Если же сразу обраться к замене атрибута src, то опять таки, кто знает, не приспичит ли какому-нибудь веб-мастеру расписать "<img src", например, так: "< img src ", и суд его, несомненно, оправдает.
     
  13. Sandr

    Sandr Гость

    Добавляете в ваш ХТМЛ пару строк на JavaScript который удет выполнятся при открытии странички и подменять ссылки на картинки... это буквально 3 строчки скрипта...
     
  14. Гость

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

    Sandr Гость

    Завтра... сейчас мой мозг тоже не сображает... с Рождеством :)
     
  16. Гость

    Большое спасибо ! И Вас с тем же !
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Программер
    Прошу прощения, но дома я тоже не нашёл эти xslt-ешек.
    Но, как я понял из задания они и не особо бы помогли...
     
  18. Гость

    Скорее всего не помогли бы :) . Но все равно спасибо.
     
  19. Sandr

    Sandr Гость

    В общем скрипт должден быт ьпримерно таким

    var aImgs = document.getElementsByTagName("IMG"); - это возвращает масив всех IMG

    потом в цикле перебираете все картинки и заменяете ему сорс

    for (i = 0; i < aImgs.length ; i++) {
    sURL = ... - тут sURL ваш новый линк. Старый линк парсите и вычисляете новый. Линк распарсить, я думаю, Вы сможете...
    aImgs.src = sURL - где sURL ваш новый линк. Линк распарсить, я думаю, Вы сможете...
    }

    Удачи!
     
  20. Гость



    АГРАМАДНОЕ СПАСИБО !

    /MODERATOR/ а давайте ка без спасибов. Плус в репу ув.Sandr'y и гуд. а то буду раздавать слонов
     
Загрузка...

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