这是正确的XML语法吗
我想知道这是否是一种正确的XML语法,因为我需要使用VBscript删除文档中的一个节点,但我确实无法做到这一点这是正确的XML语法吗,xml,vbscript,Xml,Vbscript,我想知道这是否是一种正确的XML语法,因为我需要使用VBscript删除文档中的一个节点,但我确实无法做到这一点 <?xml version="1.0" encoding="utf-8"?> <dbm> <servers> <server name="PCTEST"> <references> <database name="TES1" path="\C$\Build"/>
<?xml version="1.0" encoding="utf-8"?>
<dbm>
<servers>
<server name="PCTEST">
<references>
<database name="TES1" path="\C$\Build"/>
</references>
</server>
</servers>
</dbm>
虽然我无法从列表中找到XML文档,但直接输入和检测可以轻松地自动验证XML
编辑:尽管我无法从列表中找到XML文档,但直接输入和检测可以轻松地自动验证XML
编辑:看起来不错,但如果您想要一个方便(免费)的工具来验证和使用XML,它非常有用
您可能需要检查文件的编码是否匹配UTF-8:。看起来不错,但是如果您想要一个方便(免费)的工具来验证和使用XML,这是非常有用的 您可能需要检查文件的编码是否匹配UTF-8:。它可能是 如果没有模式(如a或a),就不可能确定 一些解析器/操纵器根据模式进行验证,有时它们被配置为使用外部模式,这意味着您的程序可能(比您想象的更早)加载一些模式,并以模式不允许的方式使删除或操纵文档的请求失败 如果您没有使用模式,或者(更糟的是)您使用的是您自己或您公司的某个人编写的特殊解析器),那么我怀疑您的解析器中存在错误。它可能是 如果没有模式(如a或a),就不可能确定 一些解析器/操纵器根据模式进行验证,有时它们被配置为使用外部模式,这意味着您的程序可能(比您想象的更早)加载一些模式,并以模式不允许的方式使删除或操纵文档的请求失败 如果您没有使用模式,或者(更糟的是)您使用的是您自己或您公司的某个人编写的特殊解析器,那么我怀疑您的解析器中存在错误。尝试以下方法:
Set xmldoc = CreateObject("Microsoft.XMLDOM")
xmldoc.async = false
xmldoc.loadXml _
"<?xml version='1.0' encoding='utf-8'?>" & _
"<dbm>" & _
" <servers>" & _
" <server name='PCTEST'>" & _
" <references>" & _
" <database name='TES1' path='\C$\Build'/>" & _
" </references>" & _
" </server>" & _
" </servers>" & _
"</dbm>"
''// Removing a single node
Set nodeToBeRemoved = xmldoc.selectSingleNode("//database[@name='TES1']")
If Not nodeToBeRemoved Is Nothing Then
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
End if
''// Removing multiple nodes
Set nodesToBeRemoved = xmldoc.selectNodes("//database")
For Each nodeToBeRemoved In nodesToBeRemoved
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
Next
''// alert xmldoc.xml
Set xmldoc=CreateObject(“Microsoft.XMLDOM”)
xmldoc.async=false
xmldoc.loadXml_
"" & _
"" & _
" " & _
" " & _
" " & _
" " & _
" " & _
" " & _
" " & _
""
“”//删除单个节点
设置nodeToBeRemoved=xmldoc.selectSingleNode(//数据库[@name='TES1'])
如果不是nodeToBeRemoved,那就什么都不是了
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
如果结束
''//删除多个节点
Set nodesToBeRemoved=xmldoc.selectNodes(//数据库)
对于每个节点,在节点中删除节点删除节点删除节点删除
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
下一个
''//alert xmldoc.xml
试试这个:
Set xmldoc = CreateObject("Microsoft.XMLDOM")
xmldoc.async = false
xmldoc.loadXml _
"<?xml version='1.0' encoding='utf-8'?>" & _
"<dbm>" & _
" <servers>" & _
" <server name='PCTEST'>" & _
" <references>" & _
" <database name='TES1' path='\C$\Build'/>" & _
" </references>" & _
" </server>" & _
" </servers>" & _
"</dbm>"
''// Removing a single node
Set nodeToBeRemoved = xmldoc.selectSingleNode("//database[@name='TES1']")
If Not nodeToBeRemoved Is Nothing Then
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
End if
''// Removing multiple nodes
Set nodesToBeRemoved = xmldoc.selectNodes("//database")
For Each nodeToBeRemoved In nodesToBeRemoved
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
Next
''// alert xmldoc.xml
Set xmldoc=CreateObject(“Microsoft.XMLDOM”)
xmldoc.async=false
xmldoc.loadXml_
"" & _
"" & _
" " & _
" " & _
" " & _
" " & _
" " & _
" " & _
" " & _
""
“”//删除单个节点
设置nodeToBeRemoved=xmldoc.selectSingleNode(//数据库[@name='TES1'])
如果不是nodeToBeRemoved,那就什么都不是了
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
如果结束
''//删除多个节点
Set nodesToBeRemoved=xmldoc.selectNodes(//数据库)
对于每个节点,在节点中删除节点删除节点删除节点删除
nodeToBeRemoved.parentNode.RemoveChild nodeToBeRemoved
下一个
''//alert xmldoc.xml
看起来很好-您遇到了什么问题?我不知道如何从文件中删除数据库节点,然后用vbscript保存,我已经尝试了很久了。所以我想可能节点本身不合法或者什么的。看起来很好-你有什么问题?我不知道如何从文件中删除数据库节点,然后用vbscript保存它,我已经尝试了很久了。因此,我认为节点本身可能不合法或其他什么。谢谢您的工作,但我不确定您是否理解用于选择节点的语法(“//database[@name='TES1']”)。如果我想选择所有数据库节点,如果我有几个,我会只选择SelectNodes(//数据库)?谢谢你的回答,你说得对,SelectNodes
就可以了;我更新了我的答案以反映这个例子。关于sintax,这是一个XPath
表达式:谢谢您的工作,但我不确定您是否理解用于选择节点(“//database[@name='TES1']”)的语法。如果我想选择所有数据库节点,如果我有几个,我会只选择SelectNodes(//数据库)?谢谢你的回答,你说得对,SelectNodes
就可以了;我更新了我的答案以反映这个例子。关于sintax,这是一个XPath
表达式: