• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Работа с Notesdomparser Class

  • Автор темы Azrael
  • Дата начала
A

Azrael

Кто-нибудь встречался со следующей проблемой: NotesDOMParser работает только, если в XML-файле есть только английские символы и вообще нормально работает только, если в заголовке будет <?xml version="1.0"?>, а если уже <?xml version="1.0" encoding="windows-1251"?>, то вываливается ошибка на методе Process или Parse. Такая же ошибка вылазит и в случае, если будут английские буквы, т.е.
Код:
<?xml version="1.0"?>
<ovkdom>
<firm>
<orgname>roga i kopita</orgname>
...
а
Код:
<?xml version="1.0"?>
<ovkdom>
<firm>
<orgname>Рога и копыта</orgname>
...
уже не работает
Из справки...
Код:
(Declarations)
Dim domParser As NotesDOMParser
Dim LF As String
Sub Initialize
Dim session As NotesSession
Dim db As NotesDatabase
Dim inputStream As NotesStream, outputStream As NotesStream
Dim docNode As NotesDOMDocumentNode

Dim origXML As String, outputFile As String
origXML = "c:\dxl\xmldom.xml"
outputFile = "c:\dxl\DOMtree.txt"

Dim header As String
header = "Walk Tree agent"
LF = Chr(13)+Chr(10)

On Error Goto errh

Set session = New NotesSession	
Set db = session.CurrentDatabase

'create the output file
Set outputStream =session.CreateStream
outputStream.Open (outputFile)
outputStream.Truncate

'write report title
outputStream.WriteText ("DOM Parser Report - " )
outputStream.WriteText (header+LF)

'open the XML file
Set inputStream = session.CreateStream
inputStream.Open (origXML)
If inputStream.Bytes = 0 Then
outputStream.WriteText (origXML+" is empty"+LF)
Goto results
End If

'create DOM parser and process
Set domParser=session.CreateDOMParser(inputStream, outputStream)
domParser.Process

'get the document node
Set docNode = domParser.Document

Call walkTree(docNode)

results:
Call outputStream.Close
Exit Sub
errh:
outputStream.WriteText ("errh: "+Cstr(Err)+": "+Error+LF)
Resume results
End Sub
 
M

morpheus

Вазродю тему с такой же ситуацией , как и у автора

Если значения набиты кирилицей то не работает САХПарсер.
Если оставить кирилические значения и кодировку 1251,, то ругаеться такой воть ошибкой
err.JPG

Если сменить кодировку на утф-8 - не распознаё кирилические символы

клиент 7.0.2
XML чужой, приходит по почте
 
N

nvyush

У меня DOM-парсер клинил при наличии в xml между тэгами символов табуляции, переводов строк, т.е. это "кушал":
Код:
<?xml version='1.0' encoding='windows-1251'?><document><table><tr><td>данные</td></tr></table></document>
а это — нет:
Код:
<?xml version='1.0' encoding='windows-1251'?>
<document>
<table>
<tr>
<td>
данные
</td>
</tr>
</table>
</document>
 
K

Kee_Keekkenen

открывать пришедший xml, наверное нужно в той кодировке, в которой он создан, т.е. явно указывать кодировку при открытии файла в поток иначе он откроет в утф8, а после, возможно, нужно будет конвертнуть в unicode то, что в потоке, если парсер не заработает без конвертации..

или что-то подобное.. нужно поиграться кодировками..
 
M

morpheus

или что-то подобное.. нужно поиграться кодировками..


угу, так и зделал
Call inputStream.Open (origXML, "ASCII") - и о чудо, читает ... вот толька в кирилице кракозяблы

сума сойти, стоило поставить
Call inputStream.Open (origXML, "Windows-1251") - и всё заработало и читает нормально.

разобрался, чего и всем желаю.
всем спасибо
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!