我尝试在服务器上生成一些xml文件(TMX
)。
服务器是Solaris SPARC服务器,但文件的目标是一些传统的Windows CAT工具。
CAT-Tool需要CR+LF
行结尾,这是Windows上的默认行。使用xmlWriter
使用libxml2编写文件很简单,并且运行良好。但我还没有找到一种方法来强制lib发出CR+LF
而不是Unix标准LF
。 lib似乎只支持它运行的平台的行结尾。
有人找到了一种生成文件的方法,其中另一行的结尾超过了它运行的平台的默认值。实际上我的解决方法是打开写入的文件并使用简单的C
循环编写一个更改的行结尾的新文件。这是有效的,但在我们的链中有这样一个不必要的步骤是很烦人的。
答案 0 :(得分:2)
我自己没有尝试过,但是从xmlsave开始,我可以看到两种可能性
iowrite
回调并转换为CF / LF 也许,还有其他选择,但我还没有找到它们。
答案 1 :(得分:2)
CAT-Tool需要CR + LF行结尾,这是Windows上的默认行。
FWIW,这意味着CAT-Tool有一个破碎的XML解析器。它不应该关心这一点,正如the the XML spec所说:
为了简化应用程序的任务,XML处理器必须的行为就好像它规范了所有换行符......通过翻译双字符序列#xD #xA和任何#xD来表示#xA后面没有一个#xA字符。
我经常知道这些事情是我们无法控制的,但如果您可以依靠CAT-Tool供应商来修复他们的软件,它可能会成为一个更具前瞻性的解决方案。
答案 2 :(得分:1)
根据源代码(截至2013年4月),libxml2只是将“\ n”放入输出流中。至少,在编写文档的dtd-part时。因此,动态重新编码流是获得“\ r \ n”结果的唯一选择。
如果你很幸运(和我一样)并且你的工具在Windows上运行,你可以在文本模式下打开文件,操作系统会为你重新编码。