如何反序列化具有XML或文本元素的XML

时间:2016-07-15 13:33:01

标签: c# xml

我试图将一些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;

0 个答案:

没有答案