迭代所有XML节点及其子节点

时间:2015-07-29 07:59:32

标签: dom vbscript xml-parsing

在VBScript中迭代XML文件的最有效方法是什么。

我正在寻找迭代XML文件中所有节点的方法。我不能使用XQL查询,因为我确实需要迭代所有节点来检查文件中的所有属性。

PS:基本上我正在编写一个脚本来替换对文件路径的引用。问题是这些文件路径可能位于很多地方。 (但那是我找到的)。我只需要XML迭代部分的帮助。

1 个答案:

答案 0 :(得分:2)

虽然我怀疑在搜索中加入一些智能和XPath表达式可以提高效率,但

Option Explicit

Dim oXDoc  : Set oXDoc = CreateObject( "Msxml2.DOMDocument" )
oXDoc.async = False
oXDoc.load "..\data\31677574.xml"

If 0 = oXDoc.ParseError Then
   WScript.Echo oXDoc.documentElement.xml
   walk oXDoc.documentElement, 0
Else
   WScript.Echo oXDoc.ParseError.Reason
End If

Sub walk(e, i)
  WScript.Echo Space(i), e.tagName
  Dim a
  For Each a In e.Attributes
      WScript.Echo Space(i + 1), a.name, a.value
  Next
  Dim c
  For Each c In e.childNodes
      walk c, i + 2
  Next
End Sub

输出:

cscript 31694559.vbs
<Configuration>
        <Add SourcePath="\\sample" ApplicationEdition="32">
                <Product ID="SampleProductID">
                        <Language ID="en-us"/>
                        <Language ID="en-us"/>
                </Product>
        </Add>
</Configuration>
 Configuration
   Add
    SourcePath \\sample
    ApplicationEdition 32
     Product
      ID SampleProductID
       Language
        ID en-us
       Language
        ID en-us

将访问所有元素及其属性。