2017-08-14 61 views
0

我有以下我嘗試解析的多級XML樹。我可以很容易地獲得第一級,但似乎無法弄清楚如何在經過多次搜索後找到其他人。最終,我們需要的是每個級別的數據完整列表,以及獲取每篇文章的內容以及獲取文章ID。 有人可以幫助我嗎?在經典ASP中分析高級XML

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

使用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/> 
+0

當我在示例XML上運行上述,我沒有得到任何結果。它沒有進入for循環。沒有錯誤。 – Dennis

+0

嗨丹尼斯,你將不得不通過你的代碼進行調試來弄清楚發生了什麼。檢查你的XML是否有效,我必須修正你發佈的原始樣本。我會從那裏開始。 –

+0

我知道 - 我在上面的xml示例中修復了一個錯字。我測試了xml,它是有效的。這實際上是爲了你?我正在使用與上面更新的完全相同的XML以及* exact *代碼。奇怪的是我嘗試了類似的代碼與選擇節點,它沒有工作。我正在運行最新版本IIS – Dennis

0

如果任何人有這個問題,這是我如何解決它。看到這個帖子:

how to solve "The download of the specified resource has failed" error?

在底部的最後註釋爲我工作。有一個問題,在與腳本相同的目錄中調用我的URL(我知道,完全忘記了 - 菜鳥錯誤),然後拋出了「指定資源的下載失敗」的其他錯誤,並將我引向此解決方案。

我認爲,我的是我的服務器從上面的工作阻止威廉的代碼在安全功能....

感謝您的幫助威廉!