domParser.Process在lotus脚本中抛出Dom分析器操作失败
问题描述:
我需要使用lotus脚本从本地磁盘读取xml文件。 我在脚本库中添加了代码并从笔记视图中调用。domParser.Process在lotus脚本中抛出Dom分析器操作失败
origXML = "d:\dxl\xmldom.xml"
outputFile = "d:\dxl\DOMtree.txt"
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
Set inputStream = session.CreateStream
inputStream.Open (origXML)
'create DOM parser and process
Set domParser=session.CreateDOMParser(inputStream, outputStream)
domParser.Process
输出和输入流,都得到了。但它抛出以下错误domParser.Process
DOM解析器操作失败
请帮我解决这个问题。 任何帮助,将不胜感激。
答
问题出在xml头文件中。它是
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:rs="urn:schemas-microsoft-com:rowset"
xmlns:z="#RowsetSchema">
我删除了所有的属性。我改为<xml>
,它的工作原理。
答
从Designer帮助摘自:
注意在7.0版中,这种方法得到了改进,处理位于URL的DTD。但是,当使用URL时,如果服务器上的负载过重,导致超时,则DOMParser.Process()会间歇性地引发错误#4602:“DOM解析器操作失败”。如果发生这种情况,调用应用程序将需要重试。
所以这可能是一个dtd的问题,要么dtd服务器没有响应或响应缓慢。我遇到了同样的问题,并在流程失败时再次尝试解决。见下面的代码:
Public Sub ParseString(s As String)
On Error 4602 GoTo ParserOperationFailed
Const MAX_RETRIES = 10
Dim isProcessed As Boolean
Dim numOfRetries As Integer
Set domParser = session.Createdomparser(s)
Do While numOfRetries < MAX_RETRIES And isProcessed = False
Call domParser.Process()
isProcessed = true
Retry:
Loop
If Not isProcessed Then
Error 1000, "Unable to get dtd, DOM parser operation failed, tried " + CStr(numOfRetries+1) + "times"
End If
Set xmlDoc = domParser.Document
Set Me.m_rootNode = xmlDoc.Documentelement
Exit Sub
ParserOperationFailed:
isProcessed = False
numOfRetries = numOfRetries + 1
Resume Retry
End Sub
答
我有同样的错误。详见domParser.log
。也许编码类型不正确,或者找不到url的xsd | xslt样式表。
答
我遇到了同样的问题。您可以执行类似以下的操作,而不仅仅是删除XML标头属性。 InputValidationOption property
'create DOM parser and process
Set domParser = session.CreateDOMParser(inputStream, outputStream)
domParser.InputValidationOption = VALIDATE_NEVER
domParser.Process
'inputStream.open'是否返回true? 'd:\ dxl \ xmldom.xml'是否包含有效的xml?发生错误后,domParser.log包含什么? –
xml路径是正确的 – Vijayakumar