C# 反序列化来自不同元素的同名xml属性
我开始研究XML(反)序列化,我正在努力反序列化以下XMLC# 反序列化来自不同元素的同名xml属性,c#,xml,deserialization,C#,Xml,Deserialization,我开始研究XML(反)序列化,我正在努力反序列化以下XML <?xml version="1.0" encoding="utf-8" ?> <Reader> <NewRecord value ="HH"/> <FileTerminator value ="HHProgram"/> <OutputFont value ="Courier"/> </Reader> 我在引用每个元素的正确值属性时遇到了问题,下面的X
<?xml version="1.0" encoding="utf-8" ?>
<Reader>
<NewRecord value ="HH"/>
<FileTerminator value ="HHProgram"/>
<OutputFont value ="Courier"/>
</Reader>
我在引用每个元素的正确值属性时遇到了问题,下面的XML按预期工作
<?xml version="1.0" encoding="utf-8" ?>
<LayoutReader>
<NewRecord>HH</NewRecord>
<FileTerminator>HHProgram</FileTerminator>
<OutputFont>Courier</OutputFont>
</LayoutReader>
嗯
hh程序
信使
尝试使用此代码,它会按照您的预期工作。也可以用同样的方法添加其他属性
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
后者无需调整即可工作,因为其中有元素的值
[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