2017-08-14 17 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> 

ここでは、私はそれがレベル1を取得するために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をテストしました、それは有効です。これは実際にあなたのために走った?私は上記とあなたの* exact *コードを更新した同じ正確なxmlを使用しています。奇妙なことは、私は選択したノードと同様のコードを試して、それは動作しませんでした。私は最新のバージョンのIIS – Dennis

0

を作成し、他の誰がこの問題を持っている場合、これは私がそれを解決する方法です。この記事を参照してください。

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

下部の最後のコメントは私のために働きました。スクリプトと同じディレクトリから自分のURLを呼び出す際に問題がありましたが、「指定されたリソースのダウンロードが失敗しました」という別のエラーがこのソリューションにつながりました。

私は助けウィリアムため

おかげで....上記の作業からウィリアムのコードをブロックする私のサーバー上のセキュリティ機能があり、私のことを考えます!

関連する問題