我正在尝试解析以下多层XML树。我可以很容易地获得第一级,但似乎无法弄清楚如何在经过多次搜索后获得其他人。最终我们需要的是每个级别的数据的完整列表,迭代每篇文章以及获取文章ID。 有人可以帮我吗?
XML:
<search>
<numresults>26707</numresults>
<pagesize>20</pagesize>
<articles>
<article id="998">
<title>my title 1</title>
<url>www.google.com</url>
<attributes>
<performer>
<id>122</id>
<url>www.yahoo.com</url>
<name>Elvis</name>
</performer>
</attributes>
</article>
<article id="999">
<title>my title 2</title>
<url>www.microsoft.com</url>
<attributes>
<performer>
<id>123</id>
<url>www.aol.com</url>
<name>Aerosmith</name>
</performer>
</attributes>
</article>
</articles>
</search>
以下是我对XML有用的第一步:
Set objXML = CreateObject("Microsoft.XMLDOM")
Set objEvents = CreateObject("Microsoft.XMLDOM")
objXML.async = False
objXML.setProperty "ServerHTTPRequest", true
objXML.Load (sURL)
'CaSe sensitive
Set objEvents = objXML.getElementsByTagName("article")
NumEvents = objEvents.length 'zero based
Response.Write NumEvents
c = 0
Do Until c = NumEvents
Set objEventDetails = objEvents.item(c)
Title = Trim(objEventDetails.childNodes(0).text)
Response.Write Title & "<br>"
c = c + 1
Loop 'main XML feed loop
Set objEvents = Nothing
Set objXML = Nothing
任何帮助将不胜感激!!
答案 0 :(得分:0)
使用XPath而不是抓取下一个孩子。
这是一个例子
Set xml = CreateObject("Msxml2.DOMDocument")
xml.Async = "False"
xml.Load("search.xml")
strReturn = ""
for each ndArticle in xml.selectNodes( "//article" )
strReturn = strReturn + ndArticle.getAttribute( "id" ) + vbCrLf
for each ndChild in ndArticle.selectNodes(".//" )
if ndChild.nodeName <> "#text" then
strLast = ndChild.nodeName
else
strReturn = strReturn + strLast + "=" + ndChild.nodeTypedValue + "<br/>" + vbCrLf
end if
next
next
WScript.Echo strReturn
创建
998
title=my title 1<br/>
url=www.google.com<br/>
id=122<br/>
url=www.yahoo.com<br/>
name=Elvis<br/>
999
title=my title 2<br/>
url=www.microsoft.com<br/>
id=123<br/>
url=www.aol.com<br/>
name=Aerosmith<br/>
答案 1 :(得分:0)
如果其他人有这个问题,我就是这样解决的。看这篇文章:
how to solve "The download of the specified resource has failed" error?
底部的最后评论对我有用。有一个问题是调用我的URL来自与脚本相同的目录(我知道,完全忘了 - 菜鸟错误),然后抛出另一个错误“指定资源的下载失败”导致我找到这个解决方案。
我认为我的服务器上有一个安全功能阻止威廉的代码在上面工作......
感谢William的帮助!