C++ 选择以libxml2结尾的行
我尝试在我们的服务器上生成一些xml文件(C++ 选择以libxml2结尾的行,c++,c,windows,unix,libxml2,C++,C,Windows,Unix,Libxml2,我尝试在我们的服务器上生成一些xml文件(TMX) 服务器是Solaris SPARC服务器,但文件的目标是一些遗留的Windows CAT工具 CAT工具需要CR+LF行结束符,这是Windows上的默认设置。使用libxml2编写文件,使用xmlWriter非常简单,效果也非常好。但是我还没有找到一种方法来强制lib发出CR+LF,而不是Unix标准的LF。lib似乎只支持它所运行的平台的行尾 是否有人找到了一种方法来生成以另一行结尾的文件,而不是它所运行的平台的默认行。实际上,我的解决方法
TMX
)
服务器是Solaris SPARC服务器,但文件的目标是一些遗留的Windows CAT工具
CAT工具需要CR+LF
行结束符,这是Windows上的默认设置。使用libxml2编写文件,使用xmlWriter
非常简单,效果也非常好。但是我还没有找到一种方法来强制lib发出CR+LF
,而不是Unix标准的LF
。lib似乎只支持它所运行的平台的行尾
是否有人找到了一种方法来生成以另一行结尾的文件,而不是它所运行的平台的默认行。实际上,我的解决方法是打开已写入的文件,并使用一个简单的
C
循环编写一个新文件,其中的行结尾已更改。这是可行的,但在我们的链条中有这样一个不必要的步骤是令人恼火的 我自己也没有尝试过,但从中我可以看到两种可能性
- :保存到缓冲区,转换为CR/LF并自己写出来
- :在编写回调函数时,注册一个
回调并转换为CF/LFiowrite
我知道这些事情通常是我们无法控制的,但如果您可以依靠CAT工具供应商来修复他们的软件,它可能会成为一个更经得起未来考验的解决方案。根据源代码(截至2013年4月),libxml2只是将“\n”放入输出流中。至少,在编写文档的dtd部分时。因此,动态重新编码流是获得“\r\n”结果的唯一选项
如果你(和我一样)幸运,并且你的工具在Windows上运行,你可以在文本模式下打开文件,操作系统会为你重新编码。毫无疑问,它已经坏了,但我无法更改它。这是一个大型组织,涉及大约5000个工作站。我只是翻译人员工作的一个组件的制作人。此外,我说的主要是CAT工具,但也有一些其他遗留组件会阻塞。如前所述,我们会一步一步地删除和更改,但需要很长时间才能修复所有问题。我问这个问题是为了去除至少一个积垢。谢谢你的建议。等我回来工作的时候我会试试的。我不想使用内存构建的结构(文件可能很大),因为我更喜欢
xmlWriter
对象的顺序触发和遗忘模式。谢谢,这就是我想的。不幸的是,该程序在后端的Solaris SPARC服务器上运行,并将用于Windows PC上的CAT工具。