2013-06-23 86 views
0

问候你们,这是我第一次在这里 我得到了一些数据从一个XML文件的问题VB.net解析XML(属性)的YouTube GDATA

VB代码是

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    If (ComboBox1.Text = "") Then 

     MessageBox.Show("No file name entered") 

    Else 


     Dim document As XmlReader = New XmlTextReader("http://gdata.youtube.com/feeds/api/users/kavvsona") 

     While (document.Read()) 

      Dim type = document.NodeType 

      If (type = XmlNodeType.Element) Then 

       If (document.Name = "yt:statistics/viewCount") Then 

        xmlMyName.Visible = True 
        xmlMyName.Text = document.ReadInnerXml.ToString() 

       End If 

       If (document.Name = "yt:statistics/viewCount/") Then 

        xmlMyEmail.Visible = True 
        xmlMyEmail.Text = document.ReadInnerXml.ToString() 

       End If 

       If (document.Name = "viewCount") Then 

        xmlMyTel.Visible = True 
        xmlMyTel.Text = document.ReadInnerXml.ToString() 

       End If 

       If (document.Name = "Notes") Then 

        xmlMyNotes.Visible = True 
        xmlMyNotes.Text = document.ReadInnerXml.ToString() 

       End If 

      End If 

     End While 


    End If 

End Sub 

和XML文件是此链接http://gdata.youtube.com/feeds/api/users/kavvsona

我想提取以下信息下提供:

<yt:statistics lastWebAccess='1970-01-01T00:00:00.000Z' subscriberCount='9574' videoWatchCount='0' viewCount='120873' totalUploadViews='2374024'/> 
<media:thumbnail url='http://i1.ytimg.com/i/T1ybzRP4iTT7NU6qbhV24g/1.jpg?v=51064230'/><yt:username>kavvsona</yt:username> 

我不知道如何从yt:thing和attribute中取出它。请帮我

感谢

回答

0

您应该使用XPath对于这种XML解析任务:

Imports System.Xml.XPath 
... 
Dim nsManager As XmlNamespaceManager = New XmlNamespaceManager(New NameTable()) 
nsManager.AddNamespace("yt", "http://gdata.youtube.com/schemas/2007") 

Dim xml As XDocument = XDocument.Load("http://gdata.youtube.com/feeds/api/users/kavvsona") 
Dim statsElement As XElement = DirectCast(xml.XPathEvaluate("//yt:statistics", nsManager), IEnumerable).Cast(Of XElement)().Single() 
Dim usernameElement As XElement = DirectCast(xml.XPathEvaluate("//yt:username", nsManager), IEnumerable).Cast(Of XElement)().Single() 

Dim viewCount As Int32 = Int32.Parse(statsElement.Attribute("viewCount").Value) 
Dim username As String = usernameElement.Value 

MessageBox.Show(username & ": " & viewCount) 

结果:

kavvsona: 120873