Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过XML的经典ASP循环_Xml_Asp Classic - Fatal编程技术网

通过XML的经典ASP循环

通过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

我有一个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和名称?我是否需要在现有的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