Работа с Notesdomparser Class

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

Azrael

#1
Кто-нибудь встречался со следующей проблемой: 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
 

morpheus

скриптописец
07.08.2006
3 915
1
#3
Вазродю тему с такой же ситуацией , как и у автора

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

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

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

Вложения

  • 21.4 КБ Просмотры: 176

nvyush

Lotus team
22.04.2009
2 317
0
#4
У меня 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>
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#5
открывать пришедший xml, наверное нужно в той кодировке, в которой он создан, т.е. явно указывать кодировку при открытии файла в поток иначе он откроет в утф8, а после, возможно, нужно будет конвертнуть в unicode то, что в потоке, если парсер не заработает без конвертации..

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

morpheus

скриптописец
07.08.2006
3 915
1
#6
или что-то подобное.. нужно поиграться кодировками..

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

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

разобрался, чего и всем желаю.
всем спасибо