由于xml中引用了外部dtd定义的实体,
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(sr);
时会报文档(2,5901)出错
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Test SYSTEM "entities.dtd">
<Test>
&ge
</Test>
entities.dtd文件
<!ENTITY ge               "&#x02265;" >
如果把xml文件改为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Test SYSTEM [<!ENTITY ge               "&#x02265;" >]>
<Test>
&ge
</Test>
这样是可以的。
所以说我认为似乎是XmlSerializer不会主动是调用外部引用的dtd文件。
欢迎回复讨论。谢谢