C#XMLTextWriter-XML1.1
我正在处理一个处理C#中字符串本地化的大型XML文件。我没有编写生成XML的程序,但我可以访问源代码,我想修改它,因为它当前输出1.0版本,但文档中包含非法字符 下面是代码当前的编写方式C#XMLTextWriter-XML1.1,c#,xml,xml-1.1,C#,Xml,Xml 1.1,我正在处理一个处理C#中字符串本地化的大型XML文件。我没有编写生成XML的程序,但我可以访问源代码,我想修改它,因为它当前输出1.0版本,但文档中包含非法字符 下面是代码当前的编写方式 XmlTextWriter xr = new XmlTextWriter(fileName, Encoding.UTF8); xr.Formatting = Formatting.Indented; xr.Indentation = 4; xr.WriteStartDocument(); xr.WriteSt
XmlTextWriter xr = new XmlTextWriter(fileName, Encoding.UTF8);
xr.Formatting = Formatting.Indented;
xr.Indentation = 4;
xr.WriteStartDocument();
xr.WriteStartElement("tlkFile");
// ...
然而,报告指出,它使用的是XML版本1.0。我知道这是行不通的,因为我正在编写一个java解析器来修改这个XML,它无法加载,因为它包含不允许的unicode字符。特别是和#x18代码>显示为“取消”。我不知道这是为什么。。。不过,该文件大约有500000行
在我的java解析器将标题转换为1.1之前,我手动更改了标题,结果成功了。从技术上讲,我可以将XML修改为字符串,然后对其进行解析,但我宁愿使用正确的XML
我找不到任何办法来改变这一点。我真的无法将该工具更改为使用其他形式的XML编写,因为它是一个使用的共享开源项目,而且我对C#不是很在行
有什么诀窍吗?使用以下过程:
- 创建IXmlSerializable接口的自定义实现
- 手柄
代码>使用自定义方法
- 使用实现的实例来读取文档
参考资料
能否将WriteStartDocument()替换为WriteRaw(“”)并删除WriteEndDocument()?如何指定要写入的内容?e、 g.WriteString
?有一些关于无效字符的备注。XmlTextWriter在将文本数据写入文档时在内部使用。该类型仅限于XML 1.0中有效的字符。我非常怀疑您是否能够使用正常方式将\x18
写入XML文档。正在编写的内容是一个反编译的本地化文件(Talkfile,TLK),用于不真实的引擎游戏。如果我手动将头更改为使用1.1,我可以让java解析并编写它。我进一步查看了文档,我认为.NET甚至不支持1.l,这太糟糕了。