是否可以将内部 xml 元素反序列化为其等效类?我有以下 xml 片段:
<?xml version="1.0" encoding="utf-8" ?>
<tileconfiguration xmlns="http://somenamespace/tile-configuration">
<tile top_left_x="3" top_left_y="1" bottom_right_x="38" bottom_right_y="48">
<child>
</child>
</tile>
</tileconfiguration>
<tile />
和代表元素的等效类:
[System.Xml.Serialization.XmlRoot(ElementName = "tile")]
public class Tile : System.Xml.Serialization.IXmlSerializable
{
public System.Xml.Schema.XmlSchema GetSchema()
{
throw new NotImplementedException();
}
public void ReadXml(System.Xml.XmlReader reader)
{
throw new NotImplementedException();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
throw new NotImplementedException();
}
}
问题是,每次我尝试反序列化<tile />
- XML 反序列化器在文档 (2,2) 中<tile_configuration />
引发错误时。
System.Xml.Serialization.XmlSerializer serial = new System.Xml.Serialization.XmlSerializer(typeof(Tile));
System.IO.TextReader t = new System.IO.StreamReader("c:\\temp\\deserial.xml");
Tile q = (Tile)serial.Deserialize(t);
如果我创建一个类来<tile_configuration />
直接表示和反序列化,它工作正常,调试器进入类ReadXml
上的方法,TileConfiguration
然后我可以从中管理子<tile />
(和后代)元素的解析 - 但这需要重新阅读每次整个 xml 文件。
简而言之; 我是否需要读取和写入整个 XML 文件 - 每次我想使用序列化/反序列化时从根 xml 元素开始,或者有没有办法让我忽略多余的外部元素并直接将相关的子 xml 元素反序列化到他们的没有解析器卡盘错误的代码等效项?
非常感谢。