2013-01-03 61 views
1

如何反序列化具有多个命名空间的xml?反序列化具有多个命名空间的xml

我从YouTube拉动XML:https://gdata.youtube.com/feeds/api/users/OnlyChillstep?v=2

我可以得到<标题>,<摘要>,但不是< YT:位置>

这里的班,我也试着放的ElementName:=“YT:位置”,但没有成功

<Xml.Serialization.XmlRoot(elementname:="entry", namespace:="http://www.w3.org/2005/Atom")> _ 
Public Class YoutubeFeed 

    <XmlElement(ElementName:="title")> _ 
    Public title As String 

    <XmlElement(ElementName:="location")> _ 
    Public location As String 

End Class 


    Dim requestUri2 As String = "https://gdata.youtube.com/feeds/api/users/OnlyChillstep?v=2" 
    Dim request2 As HttpWebRequest = DirectCast(WebRequest.Create(requestUri2), HttpWebRequest) 
    Dim resultSet2 As YoutubeFeed 

    Using response2 As WebResponse = request2.GetResponse() 
     Using responseStream As Stream = response2.GetResponseStream() 
      Dim serializer As New XmlSerializer(GetType(YoutubeFeed)) 
      resultSet2 = DirectCast(serializer.Deserialize(responseStream), YoutubeFeed) 
     End Using 
    End Using 

    Console.WriteLine(resultSet2.title) 
    Console.WriteLine(resultSet2.location) 

回答

2

“YT:位置”意味着你必须包括由“YT”在你的元素定义别名命名空间。你有没有尝试过这样的事情?

<XmlElement(elementname="location" namespace="[yt's URI <- look in the xml for a xmlns:yt=blah]")> 

UPDATE 从链接,你有这些命名空间与之抗衡:

xmlns='http://www.w3.org/2005/Atom' 
xmlns:media='http://search.yahoo.com/mrss/' 
xmlns:gd='http://schemas.google.com/g/2005' 
xmlns:yt='http://gdata.youtube.com/schemas/2007' 
相关问题