我有一个XML有效载荷如下传统的ASP循环通过XML
<tsResponse>
<sites>
<site id="site-id" name="site1-name" contentUrl="site1-content-url" />
<projects>
<project id="project1-id" name="project1-name"/>
<project id="project2-id" name="project2-name"/>
</projects>
</site>
<site id="site2-id" name="site2-name" contentUrl="site2-content-url" />
<projects>
<project id="project3-id" name="project3-name"/>
<project id="project4-id" name="project4-name"/>
</projects>
</site>
</sites>
</tsResponse>
我可以通过每个站点循环,收集每个站点ID,名称和的contentURL,我有以下
Set oXML = Server.CreateObject("Microsoft.XMLDOM")
oXML.LoadXML(postResponse) ' sXML is a variable containing the content of your XML file
For Each oNode In oXML.SelectNodes("/tsResponse/sites/site")
sID = oNode.GetAttribute("id")
sName = oNode.GetAttribute("name")
sContentURL = oNode.GetAttribute("contentUrl")
Next
Set oXML = Nothing
走
但是,如何获取每个站点中的每个项目ID和名称?我现在需要另一个For循环还是效率太低?如何循环访问特定属性= X?
UPDATE
For Each oNode In oXML.SelectNodes("/tsResponse/sites/site")
sID = oNode.GetAttribute("id")
sName = oNode.GetAttribute("name")
sContentURL = oNode.GetAttribute("contentUrl")
Response.write("<h2>"&sName&"/"&sID&"/"&sContentURL&"</h2>")
For Each oNode In oXML.SelectNodes("/tsResponse/sites/site[@id='"&sID&"']/projects/project")
pID = oNode.GetAttribute("id")
pName = oNode.GetAttribute("name")
Response.write("<h3>"&pID&"/"&pName&"</h3>")
Next
Next
Set oXML = Nothing
在第二For loop
我得到
更改oNode到oNode2和它的作品!
这是否工作?您在'For'循环中缺少'SelectNodes'方法中的'projects'节点... – Paul 2014-10-28 09:38:21
这可以获取网站,但我想要网站,然后是每个网站的所有项目。修改问题 – pee2pee 2014-10-28 09:39:28