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

  • Автор темы Guest
  • Дата начала
G

Guest

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

Guest

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

Omh

Lotus team
04.07.2007
2 210
1
#3
Печатай в errorhandler'e лог от парсера (SAXParser.Log)
В нём указывается, где случилась ошибка.

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

Guest

#4
Печатай в errorhandler'e лог от парсера (SAXParser.Log)
В нём указывается, где случилась ошибка.

XSL есть в sandbox'е на официальном лотусном сайте.
Я оттуда брал, после некоторой доработки заработал.
Если надо, могу завтра выложить...
Большое спасибо. Если не трудно, выложи готовый 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 считает нужным мне сообщить. Ничего более конкретного, типа названия незакрытого тега, нету.
 
G

Guest

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

Omh

Lotus team
04.07.2007
2 210
1
#6
Выложу вечером или завтра, нет на работе этого файлика оказывается.
Как скачать страницу - не знаю к сожалению.

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

Guest

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

Guest

#8
Выложу вечером или завтра, нет на работе этого файлика оказывается.
Как скачать страницу - не знаю к сожалению.

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

Sandr

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

Guest

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

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

Omh

Lotus team
04.07.2007
2 210
1
#11
Для: Программер
Взять html как текст и тупо подменить.
Не брать в голову всю структуру, а тупо по тегу "image" или как он там :)
 
G

Guest

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

Sandr

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

Guest

#14
Добавляете в ваш ХТМЛ пару строк на JavaScript который удет выполнятся при открытии странички и подменять ссылки на картинки... это буквально 3 строчки скрипта...
Мысль хорошая, я даже не подумал подгрузить работой браузер..Но, посколько мой мозг уже ниче не соображает, не могу ли я попросить вас кинуть пример скрипта ?
 
S

Sandr

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

Omh

Lotus team
04.07.2007
2 210
1
#17
Для: Программер
Прошу прощения, но дома я тоже не нашёл эти xslt-ешек.
Но, как я понял из задания они и не особо бы помогли...
 
S

Sandr

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

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

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

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

Удачи!
 
G

Guest

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

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

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

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

Удачи!


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

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