2009-03-05 9 views
0

私のアプリケーションは、xsltが素敵なhtmlレポートに変換されたxmlファイルを生成します。私は\ nしかし、問題があります。それを行うためのいくつかのxsltのテクニックがありますが、かなり厄介で時間がかかります。xml特別な文字を手動で置き換えるにはどうすればいいですか?

だから私のソリューションは、

< BR />

にstring.replaceの\ nを行うには、その後WriteRaw(テキスト)でこれを書くためのXmlWriterを強制することでした。問題は、テキストに時には>のようないくつかの不正な文字があることです。

文字列を受け取り、XMLにやさしい文字列で変換するユーティリティメソッドを.netで見つけることができません。リフレクターを見て、このロジックを扱うクラスは公開されていません。

アイデア(これを行うために私自身のコードを書いています)の他に?

+0

現在のコードをThe Daily WTF(http://thedailywtf.com/Contact.aspx)に提出してください。あなたは一番最初に手に入るだろう。 – Welbog

+0

おい、あまりにも厳しい。少なくとも、たとえ彼のコードが何かを蒸している最悪の山であったとしても、彼はより良い学習をしようとしています。少なくともそれは尊敬する価値がある。 –

+0

誰が気にしますか? TDWTFは学習についてではなく、文字列としてXMLを解析しようとしている人で私たちのお尻を笑って失敗することです。彼の現在の解決策には全面的にWTFが書かれています。彼はTomalakから彼の答えを得ている。さて、彼の古い、壊れたコードより良い笑いを持ってみましょう。 – Welbog

答えて

3

私はこの質問への解決策がお手伝いします思う:

xslt replace \n with <br/> only in one node?

あなたは、変換プロセスに提供するテンプレートを組み込むことができ、あなたが汚い手を取得せずに終わりました。

+0

ありがとうございました。私はあなたのポストを認識していましたが、私はより速い解決策を探していました。私は今、早めに最適化しないことを選択します:)。 –

+0

Hm。それは良い決定だと思います。 ;-)あなたが気に入ったら、ここでいくつかのパフォーマンス測定値を投稿することができます。私の推測は、それは実際には致命的に遅くないということです。また、有効な出力を保証します。 – Tomalak

4

決してXMLを生成するために文字列操作を使用してはいけません。それは、社会化されていない人々があなたを笑ってしまうだけではなく、存在しないことが分かっているバグのあるコードにつながります。

テストドリブンの観点から考えてみましょう。文字列操作を使用してXMLを生成するメソッドを記述しました。さて、は決してが不正な形式のXMLを出力することを示すテストケースを作成してください。テストでこれを証明するには、XMLの推奨事項に記載されているすべてのシナリオをテストする必要があります。あなたのテストがこれを行うことを主張できるようにXMLの推奨事項を十分に知っていますか?

いいえ、そうではありません。 XML生成のフレームワークを書いているのでなければ、あなたは本当にしたくないでしょう。そのため、System.Xmlのクラスを使用してXMLを生成します。それらを書いた人々はあなたがする必要がないようにその仕事をしました。

Tomalakは、XSLTを使って何をしようとしているかを示しました。 - XMLの外に文字列データを操作するとき - とそうでないところない - XMLを生成する。これは、それが適切だ文字列操作を使用しています

string s = "replace\nnewlines\nwith\nbreaks"; 
string[] lines = s.Split('\n'); 
for (int i=0; i<lines.Length; i++) 
{ 
    xw.WriteString(lines[i]); 
    if (i<lines.Length - 1) 
    { 
     xw.WriteElementString("br", "", ""); 
    } 
} 

:あなたはXMLを生成するXmlWriterを使用している場合は、このパターンを使用しますテキスト。

+0

あなたは良い点を作っています、ロバート。 –

関連する問題