Десериализовать RSS-канал в C#.Net

Я очень новичок в десериализации, но мне дали задание десериализовать несколько каналов и извлечь данные для манипуляции.

у меня есть этот RSS-канал, который структурирован следующим образом:

    <channel>
        <title></title>
        <link></link>
        <description></description>
        <ttl></ttl>
        <item>
            <title></title>
            <link></link>
            <description></description>
            <pubDate></pubDate>
            <guid></guid>
        </item>
        <item>

в моей программе у меня есть следующая структура класса

[XmlRoot("channel")]
public class RahChannel
{
    [XmlElement("title")]
    public string title { get; set; }

    [XmlElement("link")]
    public string link { get; set; }

    [XmlElement("description")]
    public string description { get; set; }

    [XmlElement("ttl")]
    public int ttl { get; set; }

    [XmlElement("item")]
    public ItemSet[] ItemArray { get; set; }
 }

[XmlArray]
class ItemSet
{
    [XmlElement("title")]
    public string itemtitle { get; set; }

    [XmlElement("link")]
    public string itemLink { get; set; }

    [XmlElement("description")]
    public string itemDescription { get; set; }

    [XmlElement("pubDate")]
    public string pubDate { get; set; }

    [XmlElement("guid")]
    public string guid { get; set; }
}

Я использую класс system.xml.serialization, очевидно.

Меня беспокоит то, что элементы массива Items не получат значения, которые они должны получить, потому что они имеют общие имена с элементами вне массива, также правильно ли я создал массив?

я использовал эту структуру для десериализации каналов JSON, и она работала там, но я не уверен, правильно ли я ее перевел.

и каков фактический метод десериализации XML? я знаю, что MSDN говорит, что я могу сделать (http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.deserialize%28v=vs.71%29.aspx), но я просто хочу подтвердить. Ваше здоровье.


person Archaon6044    schedule 01.12.2011    source источник


Ответы (2)


Вы можете использовать XSD для создания класса из вашей XML-схемы.

http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx

person msmucker0527    schedule 01.12.2011
comment
ура, потребовалось некоторое время, чтобы понять, как это работает, но я думаю, что понял. возможность видеть, как структурирован автоматически сгенерированный класс, облегчает понимание того, как я должен делать свой. - person Archaon6044; 02.12.2011

Сделайте класс itemSet общедоступным. Также взгляните на этот проект: http://argotic.codeplex.com/. не нужно реализовывать ту же функциональность.

person nightwatch    schedule 01.12.2011
comment
я пропустил установку класса для публики, спасибо. Мне специально сказали не загружать какие-либо сторонние плагины или классы для этого проекта, так как окончательная версия окажется в облаке. все нужно делать с помощью инструментов, доступных в Visual Studio 2010 - person Archaon6044; 01.12.2011