XML mit MSXML2 auslesen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Kau.Mein.

    XML mit MSXML2 auslesen

    Hallo Forum,

    vorab erstmal ein großes Lob an das Forum, ich lese hier schon seit einer gewissen Zeit mit und habe hier schon jede Menge
    hilfreiche Threads gefunden.

    Nun habe ich allerdings ein Problem, zu dem ich keinen passenden Post gefunden habe.

    Daher hier mein Problem: Ich möchte in einer VB Form Informationen eines Youtube-Videos aus einer XML-Datei auslesen. Dazu nutze ich MSXML2, was auch eigentlich in der Vergangenheit gut geklappt hat, aber leider nicht bei meinem aktuellen Vorhaben.

    Die XML sieht so aus:

    XML-Quellcode

    1. <?xml version='1.0' encoding='UTF-8'?>
    2. <feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007'>
    3. <id>http://gdata.youtube.com/feeds/api/videos</id>
    4. <updated>2013-03-07T22:24:47.964Z</updated>
    5. <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
    6. <title type='text'>Videos matching: cPGL4pUbBls</title>
    7. <logo>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</logo>
    8. <link rel='alternate' type='text/html' href='http://www.youtube.com'/>
    9. <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos'/>
    10. <link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/batch'/>
    11. <link rel='self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos?q=cPGL4pUbBls&amp;start-index=1&amp;max-results=25'/>
    12. <author>
    13. <name>YouTube</name>
    14. <uri>http://www.youtube.com/</uri>
    15. </author>
    16. <generator version='2.1' uri='http://gdata.youtube.com'>YouTube data API</generator>
    17. <openSearch:totalResults>1</openSearch:totalResults>
    18. <openSearch:startIndex>1</openSearch:startIndex>
    19. <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
    20. <entry>
    21. <id>http://gdata.youtube.com/feeds/api/videos/cPGL4pUbBls</id>
    22. <published>2011-01-15T18:14:54.000Z</published>
    23. <updated>2013-02-19T17:24:31.000Z</updated>
    24. <category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/>
    25. <category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Sports' label='Sport'/>
    26. <title type='text'>Tor des Jahres 2010</title>
    27. <content type='text'>... aus der Sportschau vom 15.01.2011</content>
    28. <link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=cPGL4pUbBls&amp;feature=youtube_gdata'/>
    29. <link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/cPGL4pUbBls/responses'/>
    30. <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/cPGL4pUbBls/related'/>
    31. <link rel='http://gdata.youtube.com/schemas/2007#mobile' type='text/html' href='http://m.youtube.com/details?v=cPGL4pUbBls'/>
    32. <link rel='self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/cPGL4pUbBls'/>
    33. <author>
    34. <name>schneand</name>
    35. <uri>http://gdata.youtube.com/feeds/api/users/schneand</uri>
    36. </author>
    37. <gd:comments>
    38. <gd:feedLink rel='http://gdata.youtube.com/schemas/2007#comments' href='http://gdata.youtube.com/feeds/api/videos/cPGL4pUbBls/comments' countHint='150'/></gd:comments>
    39. <media:group>
    40. <media:category label='Sport' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Sports</media:category>
    41. <media:content url='http://www.youtube.com/v/cPGL4pUbBls?version=3&amp;f=videos&amp;app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='147' yt:format='5'/>
    42. <media:content url='rtsp://v7.cache7.c.youtube.com/CiILENy73wIaGQlbBhuV4ovxcBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='147' yt:format='1'/>
    43. <media:content url='rtsp://v7.cache7.c.youtube.com/CiILENy73wIaGQlbBhuV4ovxcBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='147' yt:format='6'/>
    44. <media:description type='plain'>... aus der Sportschau vom 15.01.2011</media:description>
    45. <media:keywords/>
    46. <media:player url='http://www.youtube.com/watch?v=cPGL4pUbBls&amp;feature=youtube_gdata_player'/>
    47. <media:thumbnail url='http://i.ytimg.com/vi/cPGL4pUbBls/0.jpg' height='360' width='480' time='00:01:13.500'/>
    48. <media:thumbnail url='http://i.ytimg.com/vi/cPGL4pUbBls/1.jpg' height='90' width='120' time='00:00:36.750'/>
    49. <media:thumbnail url='http://i.ytimg.com/vi/cPGL4pUbBls/2.jpg' height='90' width='120' time='00:01:13.500'/>
    50. <media:thumbnail url='http://i.ytimg.com/vi/cPGL4pUbBls/3.jpg' height='90' width='120' time='00:01:50.250'/>
    51. <media:title type='plain'>Tor des Jahres 2010</media:title><yt:duration seconds='147'/></media:group>
    52. <gd:rating average='4.3714285' max='5' min='1' numRaters='70' rel='http://schemas.google.com/g/2005#overall'/>
    53. <yt:statistics favoriteCount='0' viewCount='96487'/>
    54. </entry>
    55. </feed>



    Und so sieht meine VB Abfrage aus:

    Quellcode

    1. Private Sub btnTitel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTitel.Click
    2. Dim objDoc As MSXML2.DOMDocument
    3. Dim objNodeList As IXMLDOMNodeList
    4. Dim objNode As IXMLDOMNode
    5. Dim strXML As String
    6. strXML = "http://gdata.youtube.com/feeds/api/videos?q=cPGL4pUbBls"
    7. 'Erstellen und Laden des XML Dokuments
    8. objDoc = New MSXML2.DOMDocument
    9. objDoc.async = False
    10. objDoc.load(strXML)
    11. 'Alle Einträge der Klasse title type='text' erkennen
    12. objNodeList = objDoc.selectNodes("//media:title")
    13. For Each objNode In objNodeList
    14. MsgBox(objNode.text)
    15. Next objNode
    16. objNodeList = Nothing
    17. objDoc = Nothing
    18. End Sub


    Leider ohne Erfolg. Weder der Titel des Videos noch etwas anderes wird mir ausgegeben.
    Über Eure Hilfe würde ich mich freuen und bedanke mich schon einmal in Vorraus!
    Gibt es irgendeinen Grund dass Du unbedingt MSXML2 verwenden möchtest, anstatt die Klassen aus dem System.XML Namespace , z.B. die XMLDocument-Klasse ?

    VB.NET-Quellcode

    1. 'Erstellen und Laden des XML Dokuments
    2. Dim doc As New XmlDocument
    3. doc.Load("http://gdata.youtube.com/feeds/api/videos?q=cPGL4pUbBls")
    4. ' iterate
    5. For Each element As XmlElement In doc.DocumentElement
    6. Debug.Print(element.Name)
    7. Next


    Ab .Net 3.5 ginge auch die XDocument Klasse