我正在尝试将用户名和密码child放入XML元素中。我想要它,以便当用户输入他们的信息时,它将检查元素是否存在。如果是,它将检查它是否不同。如果不同,它会更新。如果它不存在,它将创建一个新的孩子。
XML:
<ServersList>
<Server>
<ServiceName>Test Service</ServiceName>
<Url requestQuery="default">http://localhost</Url>
<DefaultLayers filter="off"></DefaultLayers>
</Server>
</ServersList>
由于有许多服务器,我想搜索服务名称为“测试服务”的服务器,然后执行检查。
这是创建DOMDOCUMENT的VB代码。
Dim xmlDocServers As DOMDocument
Dim XMLFile As String
XMLFile = projectpath & "\system\WMS_Servers.xml"
If Not (ehfexist(XMLFile)) Then Exit Sub
Set xmlDocServers = New DOMDocument
xmlDocServers.async = False
xmlDocServers.resolveExternals = False
xmlDocServers.validateOnParse = False
xmlDocServers.load XMLFile
非常感谢任何帮助!
非常感谢!!!
答案 0 :(得分:2)
最简单的方法是利用XPATH来提取你的元素。 XPATH选择器/ ServersList / Server [ServiceName / text()='myServiceName'将提取所有具有ServiceName子元素的Server元素,该元素的文本与您的服务名称匹配。假设只存在一个这样的元素,selectSingleNode()将选出与选择器匹配的第一个元素。
如果你得到一个节点,那么你应该对“差异”进行测试,不管是什么。如果它不同,那么您应该以任何必要的方式更新它。如果没有找到节点,那么它就会被创建,我认为你也需要更新它。
完成后,请记得在xmlDocServers对象上调用Save()!
Private Sub CheckServer(ByRef xmlDocServers As MSXML2.DOMDocument, ByRef serviceName As String)
Dim xmlService As MSXML2.IXMLDOMElement
Dim updateOtherValues As Boolean
Set xmlService = xmlDocServers.selectSingleNode("/ServersList/Server[ServiceName/text()='" & serviceName & "']")
' If nothing was returned, then we must create a new node.
If xmlService Is Nothing Then
Set xmlService = xmlDocServers.createElement("Server")
xmlService.Text = serviceName
xmlDocServers.documentElement.appendChild xmlService
updateOtherValues = True
Else
updateOtherValues = IsDifferent(xmlService)
End If
If updateOtherValues Then
DoUpdateOtherValues xmlService
End If
End Sub
Private Function IsDifferent(ByRef xmlService As MSXML2.IXMLDOMElement) As Boolean
IsDifferent = True
End Function
Private Sub DoUpdateOtherValues(ByRef xmlService As MSXML2.IXMLDOMElement)
'
End Sub