Я пытаюсь десериализации XML ниже:C# Deserialize Xml приписывать значение без окружив его с классом
<venue href="http://SomeUrl">
<location id="ABC"/>
<title>Some title</title>
</venue>
Когда я обернуть его с классом, как показано ниже XmlSerializer
работает как шарм
[XmlRoot(ElementName = "venue")]
public class VenueModel
{
[XmlElement("location")]
public Location Location;
[XmlElement("title")]
public string Title;
[XmlAttribute("href")]
public string Href;
}
public class Location
{
[XmlAttribute("id")]
public string Id;
}
Но на мой взгляд, обертывая простую строку из Location
в отдельный класс, это довольно скучное решение. То, что я хотел бы достичь, состоит в том, чтобы создать более простую модель сардина, как показано ниже:
[XmlRoot(ElementName = "venue")]
public class VenueModel2
{
[SomeMagicAttribute]
public string LocationId;
[XmlElement("title")]
public string Title;
[XmlAttribute("href")]
public string Href;
}
так первый вопрос? можно ли использовать C# System.Xml.Serialization
? Если это так, каков магический атрибут для получения этих данных?
В поле класса вам не хватает Текст: [XmlText] public string Text {get; задавать; } В противном случае вы не можете прочитать значение в значение . –
Местоположение не имело никакого текстового значения. он содержит только идентификатор отправки как атрибут. и это единственное, что оно предназначено для – Misiakw
. В этом случае это не должно быть атрибутом, а значением locationid. Но, полагаю, вы не можете это изменить? –