我试图将一些xml反序列化为一个可能是格式良好的XML或直接文本的对象。我只想将它显示为文本,因此它不需要在我需要访问的某个对象中(即我将使用.ToString()来使用它。)
public class Entry
{
[XmlAttribute]
public string Label { get; set; }
[XmlAttribute]
public string Format { get; set; }
[XmlAttribute]
public string Context { get; set; }
[XmlAnyElement]
public XmlElement Data { get; set; }
}
如果Data
元素是XML:
<Entry Label="results" Context="XXXX">
<Data>
<XmlSerializableException >
<Message>Transformation failed</Message>
</XmlSerializableException >
</Data>
</Entry>
但是如果Data元素是纯文本,它不会反序列化(我在字段中得到null):
<Entry Label="results" Context="XXXX">
<Data>
Some plain text
</Data>
</Entry>
反序列化功能:
var serializer = new XmlSerializer(typeof(Entry));
var settings = new XmlReaderSettings { };
var xmlReader = XmlReader.Create(fileName, settings);
var graph = (Entry)serializer.Deserialize(xmlReader);
return graph;