Ama*_*ace 19 .net c# xml serialization
使用C#.Net 4 - XML示例(真实示例有6个属性)
<TestXML>
<TestElement attr1="MyAttr" attr2="1" DateAdded="">25</TestElement>
</TestXML>
Run Code Online (Sandbox Code Playgroud)
对于我的班级定义,我有以下内容:
public class TestXML() {
public TestXML() {}
public int TestElement {get; set;}
[XmlAttribute]
public string attr1 {get; set;}
[XmlAttribute]
public string attr2 {get; set;}
[XmlIgnore]
public DateTime DateAdded {get; set;}
[XmlAttribute("DateAdded")]
public string dateadded {
get{ return (DateAdded == null ? "" : DateAdded.ToString();}
set{ if(!value.Equals("")) DateAdded = DateTime.Parse(value);}
}
}
Run Code Online (Sandbox Code Playgroud)
现在反序列化的代码:
string xml = "<TestXML><TestElement attr1=\"MyAttr\" attr2=\"1\" DateAdded=\"\">26</TestElement></TestXML>"
using (StringReader sr = new StringReader(xml)) {
XmlSerializer serializer = new XmlSerializer(typeof(TestXML));
TestXML myxml = (TestXML)serializer.Deserialize(sr);
}
Run Code Online (Sandbox Code Playgroud)
现在我们得到的结果是(在VS中查看对象):
myxml
attr1 | null
attr2 | null
TestElement | 25
Run Code Online (Sandbox Code Playgroud)
完全丧失了为什么属性不会反序列化.
Mar*_*ell 35
要做到这一点,你需要两个级别:
[XmlRoot("TestXML")]
public class TestXml {
[XmlElement("TestElement")]
public TestElement TestElement { get; set; }
}
public class TestElement {
[XmlText]
public int Value {get;set;}
[XmlAttribute]
public string attr1 {get;set;}
[XmlAttribute]
public string attr2 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
请注意,> 26 <也可能导致问题(空白); 您可能需要将其作为字符串而不是int.
| 归档时间: |
|
| 查看次数: |
36687 次 |
| 最近记录: |