Используя атрибуты класса XML, как представить тег XML с внутренним текстом и атрибутами? - PullRequest
13 голосов
/ 03 сентября 2010

Допустим, у меня есть этот XML-файл:

<weather>
   <temp>24.0</temp>
   <current-condition iconUrl="http://....">Sunny</current-condition>
</weather>

Я пытаюсь создать класс C # для представления этого с помощью атрибутов, чтобы вызвать XmlSerializer и иметь строго типизированный доступ к тегам.Я думаю, что структура будет выглядеть примерно так:

[XmlRoot("weather")]
public class WeatherData
{
    [XmlElement("temp")]
    public string Temp { get; set; }

    [XmlElement("current-condition")]
    public CurrentCondition currentCond = new CurrentCondition();
}

public class CurrentCondition
{
    [XmlAttribute("iconUrl")
    public string IconUrl { get; set; }

    // Representation of Inner Text?
}

Представление тега 'temp' было прямым.Однако, учитывая тег типа current-condition, который имеет как внутренний текст, так и атрибут, как мне представить внутренний текст?

Я, вероятно, слишком усложняю это, поэтому, пожалуйста, не стесняйтесь предложить альтернативу.

1 Ответ

22 голосов
/ 03 сентября 2010

Используйте [XmlText] для описания внутреннего текстового содержимого.

public class CurrentCondition
{
    [XmlAttribute("iconUrl")
    public string IconUrl { get; set; }

    // Representation of Inner Text:
    [XmlText]
    public string ConditionValue { get; set; }
}
...