通过XML的经典ASP循环
我有一个XML负载,如下所示通过XML的经典ASP循环,xml,asp-classic,Xml,Asp Classic,我有一个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="p
<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和名称?我是否需要在现有的For循环中使用另一个For循环,或者这样做效率太低?如何循环特定属性=X的位置
更新
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
为oXML中的每个oNode选择节点(“/tsResponse/sites/site”)
sID=oNode.GetAttribute(“id”)
sName=oNode.GetAttribute(“名称”)
sContentURL=oNode.GetAttribute(“contentUrl”)
Response.write(“&sName&“/”&sID&“/”&sContentURL&”)
对于oXML.SelectNodes中的每个oNode(“/tsResponse/sites/site[@id=”&sID&“]/projects/project”)
pID=oNode.GetAttribute(“id”)
pName=oNode.GetAttribute(“名称”)
响应。写入(“&pID&”/“&pName&”)
下一个
下一个
设置oXML=Nothing
在第二个For循环中
我得到无效的“For”循环控制变量
将oNode更改为oNode2,它可以工作 为oXML中的每个oNode选择节点(“/tsResponse/sites/site”)
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 oNode2 In oXML.SelectNodes("/tsResponse/sites/site[@id='"&sID&"']/projects/project")
pID = oNode2.GetAttribute("id")
pName = oNode2.GetAttribute("name")
Response.write("<h3>"&pID&" / "&pName&"</h3>")
Next
Next
Set oXML = Nothing
sID=oNode.GetAttribute(“id”)
sName=oNode.GetAttribute(“名称”)
sContentURL=oNode.GetAttribute(“contentUrl”)
Response.write(“&sName&“/”&sID&“/”&sContentURL&”)
对于oXML.SelectNodes中的每个oNode2(“/tsResponse/sites/site[@id=”&sID&“]/projects/project”)
pID=oNode2.GetAttribute(“id”)
pName=oNode2.GetAttribute(“名称”)
响应。写入(“&pID&”/“&pName&”)
下一个
下一个
设置oXML=Nothing
这样行吗?您在
For
循环中的SelectNodes
方法中缺少projects
节点…这可以获得站点,但我需要站点,然后是每个站点的所有项目。修改问题您不能重复使用oNode
它已经是一个循环控制变量,请给它一个不同的名称。
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 oNode2 In oXML.SelectNodes("/tsResponse/sites/site[@id='"&sID&"']/projects/project")
pID = oNode2.GetAttribute("id")
pName = oNode2.GetAttribute("name")
Response.write("<h3>"&pID&" / "&pName&"</h3>")
Next
Next
Set oXML = Nothing