Использование атрибутов класса XML, как представлять тег XML как с внутренним текстом, так и с атрибутами?

Предположим, что у меня есть этот XML файл:

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

Я пытаюсь создать класс С# для представления этого с помощью атрибутов, чтобы вызвать 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

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

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

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