2012-03-13 6 views
1

無効な文字を含むxmlファイルがあります。私はインターネットで検索し、ファイルをテキストファイルとして読み込み、無効な文字を1つずつ置き換える以外の方法は見つけられませんでした。誰か私にXMLファイルから無効な文字を削除する最も簡単な方法を教えてくださいすることができxmlファイルから無効な文字を削除する最も簡単な方法は?

..

元のXMLストリーム:

<Year>where 12 > 13 occures </Year> 
+0

無効なXMLは何を生成していますか?代わりに –

+0

これはオプションではありません – user1249197

+0

あなたのストリーム/ファイルは有効なXMLですか?つまり、ノード内の値をフィルタリングするか、破損したxmlファイル自体を修正しますか? – MrClan

答えて

3

私はHtmlAgilityPackをしようとするだろう。少なくとも手動で解析するよりも優れています。

HtmlAgilityPack.HtmlDocument hdoc = new HtmlAgilityPack.HtmlDocument(); 
hdoc.LoadHtml("<Year>where 12 > 13 occures </Year>"); 

using(StringWriter wr = new StringWriter()) 
{ 
    using (XmlWriter xmlWriter = XmlWriter.Create(wr, 
      new XmlWriterSettings() { OmitXmlDeclaration = true })) 
    { 
     hdoc.Save(xmlWriter); 
     Console.WriteLine(wr.ToString()); 
    } 
} 

この出力:異なった質問の思考によって

<year>where 12 &gt; 13 occures </year> 
+0

あなたが 'using'ブロックを追加した場合、私は自分のupvoteについて気分が良くなります。 –

0

スタート。あなたの問題は、入力が有効なXMLではないということです。したがって、実際には、非XMLファイルから無効な文字を削除する必要があります。それはペタニックに聞こえるかもしれませんが、XMLを処理するために設計されたツールは、あなたの入力がXMLではないため、あなたにとって役に立たないことをすぐに示しています。

ソースでの問題の修正は、後でそのダメージを修復するよりも常に優れています。しかし、それは修復戦略に着手しようとしています。まず、修復したいデータの欠陥とその修復方法を正確に定義することです。ソリューションにどのような制約が適用されているかを明確に伝えることも良い考えです。たとえば、修理で誤ってコメントやCDATAセクションの内容が変更された場合はどうですか?

修復戦略を定義したら、次のようにします。 "を&amp;に置き換えます。すぐに#nnまたは#xnnの後に続けて入力しないと、名前の後に ';'をつけてコード化すると、かなり簡単になります。

関連する問題