1

複数の名前空間を持つ xml を逆シリアル化するにはどうすればよいですか?

YouTube から xml を取得しています: https://gdata.youtube.com/feeds/api/users/OnlyChillstep?v=2

< title> と < summary> は取得できますが、< yt:location> は取得できません

これがクラスです。ElementName:="yt:location" も入れようとしましたが、成功しませんでした

<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)
4

1 に答える 1

2

「yt:location」は、「yt」によってエイリアス化された名前空間を要素定義に含める必要があることを意味します。このようなことを試しましたか?

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

更新 リンクから、これらの名前空間に対処する必要があります。

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'  
于 2013-01-03T21:19:54.010 に答える