2012-03-30 7 views
4

[XmlAttribute( "att")]などのXML属性で装飾されたクラスがあります。私の目標は、このクラスのxmlを使ってXDocumentを作成することです。時々外部からシーンに入る '0x1f'文字以外はすべて素晴らしいです。私はまだエラーを取得しかしString.Replaceは16進数の文字を置換していないようです

XmlSerializer serializer = new XmlSerializer(this.GetType()); 
StringWriter sw = new StringWriter(); 
serializer.Serialize(sw, this); 
string s = sw.ToString(); 
s = s.Replace((char)0x1F, ' '); 
XDocument xs = XDocument.Parse(s); 
return xs; 

::だから当然私はそうのようにそれを交換しよう「」」、進値0x1Fのは、無効な文字です。」私は間違って行くことができ http://i.imgur.com/jZRWg.png

任意のアイデア:ちょうど健全性チェックのための

は、ここでのスクリーンショットですか?

+3

そしてから0x1fと、これらの文字列は、外部の私のコード(すなわちないのWebサービス呼び出しから取得され、 '「から0x1f」文字が時折 –

+0

@LB externally'シーンに入る方法を探してみてください私のコードベース)。たとえ私が文字列を送っても、怒っているキャラクターがサービスコールを熱くしてしまったとしても、それは依然として持続しているようです! – b9190db9

+0

@ L.B、リンクありがとう。私は受け入れられた答えに印がつけられることを確かめるでしょう。私はわずかなモバイル画面を介してのみインターネットアクセスを持っているので、大会の違反がすぐにわかりませんでした:P – b9190db9

答えて

2

エンティティとして表現されている場合は、同じ応答が返されます。おそらくそれが起こっているのでしょうか? sをご覧ください。

サンプル:

using System; 
using System.Xml.Linq; 

class Test 
{ 
    static void Main() 
    { 
     string xml = "<foo>&#31;</foo>"; 
     XDocument.Parse(xml); 
    } 
} 
+0

この行を追加することをお勧めしますか:s.Replace( ""、string.Empty); 残念ながら私は同じエラーが発生します。 – b9190db9

+0

@ b9190db9:最初の提案は*その文字列を見ることです*。デバッガにブレークポイントを設定するか、それを近くで見るために必要なものをどこかに記録してください。悪いキャラクターがどのような形を取っているか調べてみてください。 –

+0

"0x1F"を探しているところで条件付きブレークポイントを設定でき、プログラムが正常に中断します。上記のようにstring.replaceを呼び出し、ブレークする別の条件付きブレークポイントを設定します。 Notepad ++のようなものに文字列をコピー/ペーストすると、文字が表示されません。私はこの奇妙なことを見分けるのに苦労しています:P – b9190db9

2

文字X1Fは、XML 1.0で法的ではありません。したがって、XMLパーサーはそれを拒否します。エスケープされた形式で書かれているのであれば、XML 1.1では合法です。&#x1f; - 誰もがXML 1.1をサポートするわけではありません。最高のことは、このキャラクターがシステムに入っている場所を見つけて、ソースで起こっていることを止めることです。

1

charの代わりに文字列を使用して置換しようとすると、いくつかの問題がありました。私は両者を使っていくつかのテスト値を試してみて、彼らが何を見るかを見てみることをお勧めしますそれを参照する方法にもいくつかの効果があります。

var a = x.IndexOf('\u001f');      // 513 
var b = x.IndexOf(Convert.ToString((byte)0x1F)); // -1 
x = x.Replace(Convert.ToChar((byte)0x1F), ' '); // Works 
x = x.Replace(Convert.ToString((byte)0x1F), " "); // Fails 

I blagged this

関連する問題