我正在处理一个大型XML文件,该文件处理C#中的字符串本地化。我没有编写生成XML的程序,但是我可以访问源代码并想要对其进行修改,因为它当前输出的版本为1.0,但是它在文档中包含非法字符。
这是当前代码的写出方式。
XmlTextWriter xr = new XmlTextWriter(fileName, Encoding.UTF8);
xr.Formatting = Formatting.Indented;
xr.Indentation = 4;
xr.WriteStartDocument();
xr.WriteStartElement("tlkFile");
// ...
但是,它使用XML版本1.0的
WriteStartDocument()
documentation states。我知道这是行不通的,因为我正在编写一个Java解析器来修改此XML,并且由于具有不允许的Unicode字符而无法加载。特别是
似乎已取消。我不确定为什么会在这里...虽然文件长约500000行。在我的Java解析器将其抓取到1.1之前,我手动更改了标头,然后它起作用了。从技术上讲,我可以将XML修改为字符串,然后解析该字符串,但是我宁愿拥有适当的XML。
我找不到改变它的方法。我真的不能更改该工具以使用其他形式的XML编写,因为它是使用的共享开放源代码项目,并且我对C#不太满意。
有这个窍门吗?
最佳答案
使用以下过程:
创建IXmlSerializable接口的定制实现
使用自定义方法处理
使用实现的实例来阅读文档
参考文献
How to Implement IXmlSerializable Correctly
De-serialize whitespace characters using IXmlSerializable