Jan: Classic ASP -> Attribute ansprechen?

Hallo Leute,

darf hier in der Firma was mit klassischem noch auf VB6 basierendem ASP machen.

Und zwar soll ich ein XML-File auslesen. Auf aspheute.com hab ich folgendes Script gefunden:

<%
  Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
  XMLDoc.async = False

strXMLLocation = Server.MapPath("currentarticles.xml")

bSuccess = XMLDoc.load(strXMLLocation)
  If Not bSuccess Then
   Response.Write "Loading the XML file <b>" & strXMLLocation & "</b> failed!"
 Response.End
  End If

Set rootNode = XMLDoc.documentElement

If rootNode.hasChildNodes() Then
   Response.Write "<table border=""0"" width=""500"" cellspacing=""5"">"
   For Each article in rootNode.childNodes
  strTitle =  article.childNodes(0).text  ' title
  strAuthor = article.childNodes(1).text  ' author
  strURL =  article.childNodes(2).text  ' url
  strDate = article.childNodes(3).text  ' date
  strDescription = article.childNodes(4).text ' description

Response.Write "<tr><td>"
  Response.Write "<font size=1><b>[" & strDate & "]</b></font>&nbsp;"
  Response.Write "<a href=""" & strURL & """>" & strTitle & "</a>"
  Response.Write "</td></tr>" & vbCrlf
 Next
 Response.Write "</table>"
  Else
   Response.Write "Sorry, no current articles were downloaded from AspHeute.com"
  End If
%>

Mein Problem: Hier werden keine Attribute angesprochen, im Nachsatz erwähnt der Autor, dass er das in einen anderen Artikel einbaut, jedoch ist dieser unauffindbar.

Kann mir hier jemand weiterhelfen?

lg, Jan

  1. Mein Problem: Hier werden keine Attribute angesprochen [...] Kann mir hier jemand weiterhelfen?

    childNodes liefert dir eine Liste von DOM-Knoten, diese wiederum haben eine Eigenschaft attributes. Vielleicht hilft dir das weiter.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. Mein Problem: Hier werden keine Attribute angesprochen [...] Kann mir hier jemand weiterhelfen?

      childNodes liefert dir eine Liste von DOM-Knoten, diese wiederum haben eine Eigenschaft attributes. Vielleicht hilft dir das weiter.

      Siechfred

      Nur wie sieht das Syntaxmässig an dem vorhandenen VB6-Code aus?

      lg, Jan

      1. Hi,

        dim attributwert as string
        attributwert = xmlnode.Attributes.GetNamedItem("attributename")

        ... sagt mir mein gedächtnis an alte VB6 Zeiten :)

        Etwas Selbstinitiative beim Suchen auf MSDN hätte dir das sicher auch recht schnell ans Tageslicht gefördert.

        Ciao, Frank

        1. Hiho,

          Etwas Selbstinitiative beim Suchen auf MSDN hätte dir das sicher auch recht schnell ans Tageslicht gefördert.

          Also seit .NET finde ich kaum noch was hilfreiches bei MSDN. Da muss man schon wissen wo man es findet. Zumal auch dort mittlerweile jede Seite den Verweis "This page is specific to .NET Framework 3.0" enthaelt...

          Vielleicht hilft das hier: http://msdn2.microsoft.com/en-us/library/d1wf56tt.aspx

      2. childNodes liefert dir eine Liste von DOM-Knoten, diese wiederum haben eine Eigenschaft attributes. Vielleicht hilft dir das weiter.
        Nur wie sieht das Syntaxmässig an dem vorhandenen VB6-Code aus?

        For Each article in rootNode.childNodes  
          'article ist vom Typ IXMLDOMNode  
          'IXMLDOMNode.attributes liefert alle Attribute des aktuellen Knotens  
          For Each property in article.attributes  
            'Beispiel fuer die Verarbeitung mittels Select..Case  
            Select Case property.baseName  
              Case "attributname"  
                Eigenschaft = property.Value  
              'und so weiter  
            End Select
        

        So in etwa, meine VB6-Kenntnisse sind stark eingerostet :)

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  2. Um mein Problem genauer zu zeigen hier noch der Inhalt des XML-Files:

    <article>
    <title aktiv="ja"><![CDATA[Probleme beim Verarbeiten von Datumswerten]]></title>
    <author><![CDATA[Christian Koller]]></author>
    <url><![CDATA[http://www.aspheute.com/artikel/20000413.htm]]></url>
    <date><![CDATA[13.4.2000]]></date>
    <description><![CDATA[Als Entwickler von Web Sites ist das Datumsformat ein ganz spezielles Problem, bei dem man sehr schnell anst&ouml;&szlig;t - weil sich die L&auml;ndereinstellungen des jeweiligen Servers auf den Code Ihrer ASP Seiten auswirken. Dieser Artikel zeigt eine L&ouml;sung, die auf allen Systemen die gew&uuml;nschten Ergebnisse liefert.]]></description>
    </article>

    Hier wird ja nur der Text angezeigt, also der Inhalt zwischen Anfangs- und End-Tag. Wie kann ich diesen Code erweitern, dass ich beim Tag "title" das Attribut "aktiv" auch auslesen kann?

    If rootNode.hasChildNodes() Then
       Response.Write "<table border=""0"" width=""500"" cellspacing=""5"">"
       For Each article in rootNode.childNodes
      strTitle =  article.childNodes(0).text  ' title
      strAuthor = article.childNodes(1).text  ' author
      strURL =  article.childNodes(2).text  ' url
      strDate = article.childNodes(3).text  ' date
      strDescription = article.childNodes(4).text ' description

    Response.Write "<tr><td>"
      Response.Write "<font size=1><b>[" & strDate & "]</b></font>&nbsp;"
      Response.Write "<a href=""" & strURL & """>" & strTitle & "</a>"
      Response.Write "</td></tr>" & vbCrlf
    Next
    Response.Write "</table>"
      Else
       Response.Write "Sorry, no current articles were downloaded from AspHeute.com"
      End If
    %>

    lg, Jan