----------------------------------创建xml----------------------------------------------------
Sub Initialize
On Error Goto a
Dim session As New NotesSession
Path = "D:\Test.xml" '创建路径
Dim ObjDom As Variant
Set ObjDom = createObject("msxml2.domdocument")
ObjDom.async = False
ObjDom.resolveExternals = False
Call ObjDom.Setproperty("SelectionLanguage","XPath") '解析Xpath语言,区分大小写
Set RootNode = ObjDom.CreateProcessingInstruction("xml","version='1.0' encoding='GBK'") '创建xml标签
Call ObjDOM.Appendchild(RootNode)
'创建根节点
Set PNode = ObjDOM.Createelement("father")
Call PNode.Setattribute("ID","007") '给PNode节点添加属性
Call PNode.Setattribute("Name","sz") '给PNode节点添加属性
Call
ObjDOM.Appendchild(PNode)
'创建子节点
Set CNode1 = ObjDom.Createelement("a1")
Call CNode1.Setattribute("value","sz")
Set CNode2 = ObjDom.Createelement("a2")
Call CNode2.Setattribute("value","wy")
Set CNode3 = ObjDom.Createelement("a1")
Call CNode3.Setattribute("value","wsp")
Call PNode.Appendchild(CNode1)
Call PNode.Appendchild(CNode2)
Call PNode.Appendchild(CNode3)
'创建子节点
Set NameNode1 = ObjDom.Createelement("Name")
NameNode1.text = "特种兵" '节点值
Set NameNode2 = ObjDom.Createelement("Name")
NameNode2.text = "小冶"
Set NameNode3 = ObjDom.Createelement("Name")
NameNode3.text = "鹏少"
Set IdNode1 = ObjDom.Createelement("ID")
IdNode1.text = "001"
Set IdNode2 = ObjDom.Createelement("ID")
IdNode2.text = "002"
Set IdNode3 = ObjDom.Createelement("ID")
IdNode3.text = "003"
'--------在指定的子节点之前插入节点--------
Set SetNode = ObjDom.Createelement("SetName")
CallSetNode.Setattribute("color","red") '插入节点属性
SetNode.text = "特种兵007" '插入节点值
Call CNode1.Parentnode.Insertbefore(SetNode,Null) '在父节点的位置
Call CNode1.Insertbefore(SetNode,Null)
'-------------------------------------------
Call CNode1.Appendchild(NameNode1)
Call CNode1.Appendchild(IdNode1)
Call CNode2.Appendchild(NameNode2)
Call CNode2.Appendchild(IdNode2)
Call CNode3.Appendchild(NameNode3)
Call CNode3.Appendchild(IdNode3)
Call ObjDom.save(Path)
Exit Sub
a:
Msgbox "错误在代理agent_CreateXml的第" & Erl & "行:" & Error
End Sub
----------------------------------在已有xml中插入节点----------------------------------------------------
Sub Initialize
On Error Goto a
Dim session As New NotesSession
Path = "D:\Test.xml"
Dim ObjDom As Variant
Set ObjDom = createObject("msxml2.domdocument")
ObjDom.async = False
ObjDom.resolveExternals = False
Call ObjDom.Setproperty("SelectionLanguage","XPath") '解析Xpath语言,区分大小写
If ObjDom.load(Path) Then '判断是否读取到指定路径下的xml文件
Set SNode = ObjDOM.SelectSingleNode("//father")
'创建子节点
Set PNode = ObjDOM.Createelement("b")
Call PNode.Setattribute("value","呵呵")
Call SNode.Appendchild(PNode)
Set CNode1 = ObjDom.Createelement("b1")
CNode1.text = "111"
Call PNode.Appendchild(CNode1)
Set CNode2 = ObjDom.Createelement("b2")
CNode2.text = "222"
Call PNode.Appendchild(CNode2)
'--------在指定的子节点之前插入节点--------
Set SetNode = ObjDom.Createelement("SetName")
Call SetNode.Setattribute("color","green") '插入节点属性
SetNode.text = "侦察兵"
Call CNode1.Parentnode.Insertbefore(SetNode,Null) '在父节点的位置
'-------------------------------------------
Call ObjDom.save(Path)
End If
Exit Sub
a:
Msgbox "错误在代理agent_InsertXml的第" & Erl & "行:" & Error
End Sub
----------------------------------修改已有xml中的节点----------------------------------------------------
Sub Initialize
On Error Goto a
Dim session As New NotesSession
Path = "D:\Test.xml"
Dim ObjDom As Variant
Set ObjDom = createObject("msxml2.domdocument")
ObjDom.async = False
ObjDom.resolveExternals = False
If ObjDom.load(Path) Then
'修改节点值
Set AimNode = ObjDOM.Selectsinglenode("/father/a1/Name")
AimNode.text = "谢文东"
'修改节点属性
Set EditNode = ObjDOM.Selectsinglenode("/father/a1")
Call EditNode.setAttribute("val3ue","80980") '不能为空
Call ObjDom.save(Path)
End If
Exit Sub
a:
Msgbox "错误在代理agent_DeleteXml的第" & Erl & "行:" & Error
End Sub
----------------------------------删除已有xml中的节点----------------------------------------------------
Sub Initialize
On Error Goto a
Dim session As New NotesSession
Path = "D:\Test.xml"
Dim ObjDom As Variant
Set ObjDom = createObject("msxml2.domdocument")
ObjDom.async = False
ObjDom.resolveExternals = False
Call ObjDom.Setproperty("SelectionLanguage","XPath") '解析Xpath语言,区分大小写
If ObjDom.load(Path) Then
'删除节点及节点值
'Set AimNode = ObjDOM.Selectsinglenode("/father/a1") '选中结点
'Call AimNode.Parentnode.Removechild(AimNode) '删除选中结点及其所有子结点
'Set AimNode = ObjDOM.Selectsinglenode("/father/a1[@value='wsp']") '选中结点(按照属性)
'Call AimNode.Parentnode.Removechild(AimNode) '删除选中结点及其所有子结点
'Set AimNode = ObjDOM.Selectsinglenode("/father/a1[1]") '选中结点(按照数组顺序从0开始)
'Call AimNode.parentnode.Removechild(AimNode) '删除选中结点及其所有子结点
'删除节点属性
Set DelNode = ObjDOM.Selectsinglenode("/father/a2")
Call DelNode.removeAttribute("value")
Call ObjDom.save(Path)
End If
Exit Sub
a:
Msgbox "错误在代理agent_DeleteXml的第" & Erl & "行:" & Error
End Sub
----------------------------------查询已有xml中的节点----------------------------------------------------
Sub Initialize
On Error Goto a
Dim session As New NotesSession
Path = "D:\Test.xml"
Dim ObjDom As Variant
Set ObjDom = createObject("msxml2.domdocument")
ObjDom.async = False
ObjDom.resolveExternals = False
Call ObjDom.Setproperty("SelectionLanguage","XPath") '解析Xpath语言,区分大小写
'ObjDom.load(Path) Load指定路径下的XML文件
'ObjDom.loadxml(doc.F_RtfXml) Load 文档中的域值
If ObjDom.load(Path) Then
'Set ANode = ObjDOM.SelectSingleNode("") 查询单个节点
'Set ANode = ObjDom.SelectNodes("") 查询多个节点
Set ANode = ObjDOM.Selectnodes("/A/a1[ID='001']/Name")
Msgbox ANode(0).text
%REM
'选取属于 A 子元素的最后一个 a1 元素。
Set ANode = ObjDOM.Selectsinglenode("/A/a1[last()-1]")
Msgbox ANode.text
'选取所有属性为value的
Set DNode = ObjDOM.Selectnodes("//@value")
For e = 0 To DNode.length-1
Msgbox DNode(e).text 'value值
Next
'选取所有节点中的Name节点
Set CNode = ObjDOM.Selectnodes("//Name")
For k = 0 To CNode.length-1
Msgbox CNode(k).text 'Name节点值
Next
Set ANode = ObjDOM.Selectnodes("/A/a1")
For i = 0 To ANode.length-1
Msgbox ANode(i).text
Next
'选取属于 A 子元素的倒数第二个 a1 元素。
Set ANode = ObjDOM.Selectsinglenode("/A/a1[last()-1]")
Msgbox ANode.text
Set ANode = ObjDOM.Selectnodes("/A/a1[ID='001']/Name")
%END REM
End If
Exit Sub
a:
Msgbox "错误在代理agent_selectXml的第" & Erl & "行:" & Error
End Sub
这个博客展示了如何在Lotus Domino中通过`ls`代理操作物理路径下的XML文件,包括创建、插入、修改和删除XML节点。示例代码详细说明了如何利用`msxml2.domdocument`对象进行XML文档的操作,如设置属性、插入和删除节点,并用XPath进行节点选择。
450

被折叠的 条评论
为什么被折叠?



