用XMLDOM和vbs进行迭代

时间:2019-02-28 18:29:58

标签: xml vbscript xmldom

如果G_Q1中的值等于x,谁能给我提示如何从G_Q9中获取值? 如果值G_Q1 <> x,则继续到下一个G_Q1。 我不喜欢XML文件的格式,但是我必须适应它。

const MyApp = createDrawerNavigator({
    Home: {
        screen: Home
    },

    Form: {
        screen: props => <Form {...props} id={0} />
    },
    {
      ....
     }
})
<Form {..props} id={0} />

我通过将<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Generated by Oracle Reports version 12.2.1.3.0 --> <WOKE611> <LIST_G_Q1> <G_Q1> <Value>1234</Value> <LIST_G_Q9> <G_Q9> <Value>0</Value> </G_Q9> <G_Q9> <Value>1</Value> </G_Q9> </LIST_G_Q9> </G_Q1> <G_Q1> <Value>5678</Value> <LIST_G_Q9> <G_Q9> <Value>0</Value> </G_Q9> <G_Q9> <Value>1</Value> </G_Q9> </LIST_G_Q9> </G_Q1> </LIST_G_Q1> </WOKE611> 更改为Dim i Set objXMLDoc = CreateObject("Msxml2.DOMDocument.6.0") objXMLDoc.Async = False objXMLDoc.Load("C:\temp\shortXml.xml") Set NodeList = objXMLDoc.SelectNodes("//G_Q1/*") For i = 1 To NodeList.Length Set CurrNode = NodeList.NextNode If CurrNode.Text = "1234" Then WScript.Echo("How to continue to get the value of G_Q9/Value ?") End If Next 来解决了这个问题。

1 个答案:

答案 0 :(得分:2)

显然,您添加到问题中的假定解决方案实际上不可能解决您描述的问题(至少在没有对代码进行进一步修改的情况下是不可能的),因为它将遍历所有 XML节点而不是只选择所需的值。

正确解决问题的方法看起来像这样:

xpath = "//G_Q1[Value='1234']/LIST_G_Q9/G_Q9/Value"
Set NodeList = objXMLDoc.SelectNodes(xpath)
For Each n In NodeList
    WScript.Echo n.Text
Next

WScript.Echo n.Text替换为您需要执行的其他处理。