2

サーバーでいくつかの xml ファイル ( TMX) を生成しようとしています。

サーバーは Solaris SPARC サーバーですが、ファイルの宛先は一部の従来の Windows CAT ツールです。

CAT-Tool ではCR+LF、Windows のデフォルトである行末が必要です。libxml2 を使用してファイルを作成するのxmlWriterは簡単で、非常にうまく機能します。CR+LFしかし、Unix standard の代わりにlib を強制的に発行する方法がわかりませんでしたLF。ライブラリは、それが実行されているプラ​​ットフォームの行末のみをサポートしているようです。

実行するプラットフォームのデフォルトとは異なる行末を持つファイルを生成する方法を誰かが見つけましたか? C実際、私の回避策は、書き込まれたファイルを開き、単純なループを使用して終了する変更された行で新しいファイルを書き込むことです。それは機能しますが、私たちのチェーンにそのような不要なステップがあるのは面倒です.

4

3 に答える 3

2

私はこれを自分で試したことはありませんが、xmlsaveから、2つの可能性を見ることができます

  • xmlSaveToBuffer : バッファに保存し、CR/LF に変換して自分で書き出す。
  • xmlSaveToIO : コールバックを登録し、iowriteコールバック関数の書き込み中に CF/LF に変換します

たぶん、他のオプションがあるかもしれませんが、私はそれらを見つけていません。

于 2013-01-02T14:56:19.870 に答える
2

CAT-Tool では、Windows のデフォルトである CR+LF の行末が必要です。

それは、CAT-Tool の XML パーサーが壊れていることを意味します。XML 仕様にあるように、これは気にする必要はありません。

アプリケーションのタスクを簡素化するために、XML プロセッサは、すべての改行を正規化したかのように動作する必要があります... 2 文字のシーケンス #xD #xA と #xA が続かない任意の #xD の両方を単一の #xA に変換することによってキャラクター。

これらのことは私たちの手に負えないことが多いことはわかっていますが、CAT-Tool ベンダーに依存してソフトウェアを修正することができれば、より将来性のあるソリューションになる可能性があります.

于 2013-01-02T16:20:57.440 に答える
1

ソース コード (2013 年 4 月現在) によると、libxml2 は "\n" を出力ストリームに入れるだけです。少なくとも、ドキュメントの dtd 部分を書き込む場合。したがって、オンザフライでストリームを再エンコードすることが、結果として "\r\n" を取得する唯一のオプションです。

(私のように) 幸運で、ツールが Windows で実行されていれば、ファイルをテキスト モードで開くことができ、OS が再コーディングを行ってくれます。

于 2013-05-28T08:57:50.443 に答える