2

我正在处理一个处理 C# 中字符串本地化的大型 XML 文件。我没有编写生成 XML 的程序,但我可以访问源代码并且我想修改它,因为它当前输出 1.0 作为版本,但它在文档中包含非法字符。

这是当前编写代码的方式。

XmlTextWriter xr = new XmlTextWriter(fileName, Encoding.UTF8);
xr.Formatting = Formatting.Indented; 
xr.Indentation = 4;
xr.WriteStartDocument();
xr.WriteStartElement("tlkFile");
// ...

但是WriteStartDocument()文档声明它使用 XML 1.0 版。我知道这不起作用,因为我正在编写一个修改此 XML 的 java 解析器,并且它无法加载,因为它具有不允许的 unicode 字符。具体来说,这似乎是取消。我不知道为什么会在这里……该文件大约有 500000 行长。

在我的 java 解析器将它抓取到 1.1 之前,我手动更改了标题,并且它起作用了。从技术上讲,我可以将 XML 修改为字符串,然后对其进行解析,但我宁愿使用适当的 XML。

我找不到任何方法来改变这一点。我无法真正更改该工具以使用其他形式的 XML 编写,因为它是一个共享的开源项目,而且我对 C# 的使用不是很好。

这有什么诀窍吗?

4

2 回答 2

1

使用以下过程:

  • 创建 IXmlSerializable 接口的自定义实现
  • 使用自定义方法处理
  • 使用实现的实例来阅读文档

参考

于 2015-01-21T23:38:30.400 回答
0

你能用 WriteRaw("<?xml version=\"1.1\"?>") 替换 WriteStartDocument() 并删除 WriteEndDocument() 吗?

于 2016-01-29T11:25:18.497 回答