2013-07-29 24 views
0

遇到问题读取驾驶我和我的伙伴坚果XML节点中的某个格式...VB脚本 - 在一行中读取多个XML节点?

我们已经试过这..但我们不断收到“空白” msgboxs ..任何帮助将是非常充分意识到

Set xmlObject = CreateObject("Msxml2.DOMDocument.6.0") 
urlPath = "C:\Users\...\Desktop\LolChampsSelect.xml" 

xmlObject.async = False 
xmlObject.load urlPath 

'set ban = xmlObject.selectNodes("//*") 
set ban = xmlObject.selectNodes("//*") 
set ban = xmlObject.selectNodes("//red/ban[@order] 
msgbox ban(0).text 

XML文件

<championSelect> 
     <blue> 
     <ban order="1" name="Darius"/> 
     <ban order="3" name="Elise" /> 
     <ban order="5" name="Twisted Fate" /> 
     <pick order="1" name="Gragas" /> 
     <pick order="4" name="Shen" /> 
     <pick order="5" name="Shyvanna" /> 
+1

您的XML(据我所见)没有文本,只有属性值。 –

+0

啊有道理。我会告诉开发者他们必须改变他们的XML输出。非常感谢你为这个 – user1189352

回答

2

最小演示了处理属性代码:

Dim sXml : sXml = Join(Array(_ 
     "<championSelect>" _ 
     , " <blue>" _ 
     , " <ban order=""1"" name=""Darius""/>" _ 
     , " <ban order=""3"" name=""Elise"" />" _ 
     , " </blue>" _ 
     , "</championSelect>" _ 
), vbCrLf) 
    Dim objMSXML : Set objMSXML = CreateObject("Msxml2.DOMDocument") 
    objMSXML.setProperty "SelectionLanguage", "XPath" 
    objMSXML.async = False 
    objMSXML.loadXml sXml 

    If 0 = objMSXML.parseError Then 
    Dim ndFound : Set ndFound = objMSXML.SelectSingleNode("/championSelect/blue/ban[@order=""3""]") 
    WScript.Echo ndFound.tagName, "found" 
    WScript.Echo "name:", ndFound.getAttribute("name") 
    Else 
    WScript.Echo objMSXML.parseError.reason 
    End If 

输出:

============== 
ban found 
name: Elise 
============== 

使用这对在文档中查找对象/功能/特性。

+0

哦哇谢谢你,会试试这个!非常感谢 – user1189352