C# десериализация - выборка атрибутов возвращает ноль - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующее XML Я хочу десериализовать:

<Contents>
    <Content>
        <Title link="first">First text</Title>
        <Text>This is the first thing you have to read</Text>
    </Content>
    <Content>
        <Title link="second">Second text</Title>
        <Text>This is the second thing you have to read</Text>
    </Content>
    <Content>
        <Title link="third">Third text</Title>
        <Text>This is the third thing you have to read</Text>
    </Content>
</Contents>

И связанные классы:

[XmlRoot("Content")]
public class Help
{
    [XmlElement("Title")]
    public string Title { get; set; }

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

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

[XmlRoot("Contents")]
public class Content
{
    [XmlElement("Content")]
    public List<Help> Contents { get; set; }
}

Я извлекаю данные, выполняя это так:

private Content ReturnHelpContent(string filename)
{
    var fileLocation = @"C:\temp\"+filename+".xml";
    Content texts = new Content();
    XmlSerializer deserializer = new XmlSerializer(typeof(Content));

    using (TextReader textReader = new StreamReader(fileLocation))
    {

        texts = (Content)deserializer.Deserialize(textReader);
    }

    return texts;
}

Выборка почти хорошая, но моя собственность Ссылка всегда пуста ... После прочтения нескольких тем тут и там у меня заканчиваются идеи, как заставить это работать. Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 06 марта 2020

Ваш XML формат неверный. Попробуйте изменить это на это:

<Contents>
<Content link="first">
    <Title >First text</Title>
    <Text>This is the first thing you have to read</Text>
</Content>
<Content link="second">
    <Title >Second text</Title>
    <Text>This is the second thing you have to read</Text>
</Content>
<Content link="third">
    <Title >Third text</Title>
    <Text>This is the third thing you have to read</Text>
</Content>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...