P
pbnoob
Доброго дня!
задача не очень сложна: изменить 1значение в XML файле. код на 90% взял из хэлпа, так как это мой первый опыт работы с XML.
проблема состоит в том, что значение не изменяется. я даже не уверен, что вообще сохраняю XML файл. подскажите плиз как сделать правильно.
задача не очень сложна: изменить 1значение в XML файле. код на 90% взял из хэлпа, так как это мой первый опыт работы с XML.
Код:
(Declaration)
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:\1\10412_03.xml"
outputFile = "c:\1\01.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
Stop
'get the document node
Set docNode = domParser.Document
Call walkTree2(docNode)
results:
Call inputStream.Close
Call outputStream.Close
Exit Sub
errh:
outputStream.WriteText ("errh: "+Cstr(Err)+": "+Error+LF)
Resume results
End Sub
Sub walkTree2(node As notesdomnode)
Dim child As notesdomnode
Dim elt As notesdomnode
Dim txt_elt As NotesDOMTextNode
Dim attrs As notesdomnamednodemap
Dim a As notesdomattributenode
Dim piNode As Notesdomprocessinginstructionnode
Dim numChildNodes As Integer
Dim i As Integer
Dim v
LF = Chr(13)+Chr(10)
Set par01=Null
Set child=node.FirstChild
Do While (Lcase(child.NodeName)<>"xfdl")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"globalpage")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"global")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"xformsmodels")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"xforms:model")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"xforms:instance")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"data")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"startpage")
Set child=child.NextSibling
Loop
Set elt=child
Set child=elt.FirstChild
Do While (Lcase(child.NodeName)<>"formid")
Set child=child.NextSibling
Loop
Set elt=child
' вот тут теперь типа замена или что-то типа того
Stop
Set txt_elt=elt.FirstChild ' дошел до нужной ноды со значением -1
'txt_elt.NodeValue="15"
'v=txt_elt.NumberOfChildNodes
'v=elt.NodeType
txt_elt.NodeValue="15" ' надо поменять к примеру на 15
'Set txt_elt=child
'txt_elt.NodeValue="12"
Stop
End Sub
проблема состоит в том, что значение не изменяется. я даже не уверен, что вообще сохраняю XML файл. подскажите плиз как сделать правильно.