2

我尝试TMX在我们的服务器上生成一些 xml 文件 ()。

服务器是 Solaris SPARC 服务器,但文件的目标是一些旧的 Windows CAT 工具。

CAT-Tool 需要CR+LF行尾,这是 Windows 上的默认设置。使用 libxml2 编写文件,使用起来xmlWriter很简单,而且效果很好。但是我还没有想出一种方法来强制 lib 发出CR+LF而不是 Unix standard LF。该库似乎只支持它运行的平台的行尾。

是否有人找到了一种方法来生成文件的结尾不是它运行的平台的默认值。实际上我的解决方法是打开写入的文件并使用一个简单的C循环以更改的行结尾写入一个新文件。这行得通,但是在我们的链条中加入这样一个不必要的步骤是很烦人的。

4

3 回答 3

2

我自己没有尝试过,但是从xmlsave,我可以看到两种可能性

  • xmlSaveToBuffer:保存到缓冲区,转换为 CR/LF 并自己写出来。
  • xmlSaveToIO:注册iowrite回调并在写入回调函数时转换为 CF/LF

也许,还有其他选择,但我还没有找到。

于 2013-01-02T14:56:19.870 回答
2

CAT-Tool 需要 CR+LF 行结尾,这是 Windows 上的默认设置。

FWIW,这意味着 CAT-Tool 有一个损坏的 XML 解析器。它不应该关心这一点,正如XML 规范所说:

为了简化应用程序的任务,XML 处理器必须表现得好像它规范了所有换行符......通过将两个字符序列 #xD #xA 和任何没有跟随 #xA 的 #xD 转换为单个 #xA特点。

我知道这些事情经常是我们无法控制的,但如果你可以依靠 CAT-Tool 供应商来修复他们的软件,它可能会成为一个更面向未来的解决方案。

于 2013-01-02T16:20:57.440 回答
1

根据源代码(截至 2013 年 4 月),libxml2 只是将“\n”放入输出流中。至少,在编写文档的 dtd 部分时。因此,动态重新编码流是获得“\r\n”结果的唯一选择。

如果你很幸运(像我一样)并且你的工具在 Windows 上运行,你可以在文本模式下打开文件,操作系统会为你重新编码。

于 2013-05-28T08:57:50.443 回答