反序列化来自不同元素的同名 xml 属性

本文关键字:xml 属性 元素 反序列化 | 更新日期: 2023-09-27 18:35:53

我开始研究XML(反)序列化,我正在努力反序列化以下XML

<?xml version="1.0" encoding="utf-8" ?>
<Reader>
  <NewRecord value ="HH"/>
  <FileTerminator value ="HHProgram"/>
  <OutputFont value ="Courier"/>
</Reader>

进入以下类

public class Reader
{
    [XmlElement]
    public string NewRecord;
    [XmlElement]
    public string FileTerminator;
    [XmlElement]
    public string OutputFont;
}

我在引用以下 XML 按预期工作的每个元素的正确值属性时遇到问题。

<?xml version="1.0" encoding="utf-8" ?>
<LayoutReader>
  <NewRecord>HH</NewRecord>
  <FileTerminator>HHProgram</FileTerminator>
  <OutputFont>Courier</OutputFont>
</LayoutReader>

反序列化来自不同元素的同名 xml 属性

尝试使用此代码,它按预期工作。您也可以以相同的方式添加其他属性

public class Reader
{
    ...
    [XmlElement("OutputFont")]
    public ReaderItemOutputFont ReaderItem { get; set; }
}

[Serializable()]
public class ReaderItemOutputFont
{
    [XmlAttribute("value")]
    public String OutputFont { get; set; }
}
这对

我有用 -

[XmlRoot]
public class Reader
{
    [XmlElement]
    public NewRecord NewRecord;
    [XmlElement]
    public FileTerminator FileTerminator;
    [XmlElement]
    public OutputFont OutputFont;
}
public class NewRecord
{
    [XmlAttribute]
    public string value;
}
public class FileTerminator
{
    [XmlAttribute]
    public string value;
}
public class OutputFont
{
    [XmlAttribute]
    public string value;
}

var t = o.Deserialize("xml"); // works