2010-11-25 16 views
4

私はXML文書を#& 233でエンコードする方法を探しています。エンコーディング。この基本的なコードを使用してXML Unicode安全なエンコーディング

var xmlDoc = new XmlDocument(); 
xmlDoc.Load(@"D:\Temp\XmlDocBase.xml"); 
xmlDoc.Save(@"D:\Temp\XmlDocBaseCopy.xml"); 

私のXMLドキュメントのパスから:

<?xml version="1.0"?> 
<Tag1> 
    <comment>entit&#233;</comment> 
</Tag1> 

<?xml version="1.0"?> 
<Tag1> 
    <comment>entité</comment> 
</Tag1> 

よろしくへ

+0

XMLはどちらの場合でも有効です。実際の文字の代わりに文字エンティティを使用する特別な理由は何ですか? – Oded

+0

これは、ドキュメント生成ツール(OWL-protégéへのアドオン)とやりとりするもので、XMLが第2のフォーマットであるときには、ソフトウェアはÀ@スタイルの文字を生成します。しかし、あなたは正しいです、両方のXMLは有効なXMLです。 –

+2

アドオンが吸う。 :-( –

答えて

4

あなたはすべてをサポートしていないエンコーディングを強制することができますユニックode文字(すなわち、 ASCII)。結果の作者はエンティティの使用を余儀なくされる。中

XmlDocument doc = new XmlDocument(); 
    doc.LoadXml("<Tag1><comment>entit&#233;</comment></Tag1>"); 

    var writer = XmlTextWriter.Create(
     @"c:\temp\o.xml", 
     new XmlWriterSettings { Encoding = System.Text.ASCIIEncoding.ASCII }); 
    doc.Save(writer); 

結果:

<?xml version="1.0" encoding="us-ascii"?><Tag1><comment>entit&#xE9;</comment></Tag1> 
2

あなたは、文字列にHttpUtility.HtmlEncodeを呼び出すことができます。

return HttpUtility.HtmlEncode("entité"); 

戻りentit&#233;

HttpUtility System.Webのの一部です。

+0

XMLではそれは文字参照です。そして、その文字列をXML APIで直接使用することはできません。なぜなら、 '&'は別の時間にエスケープされるからです。 – Joey

関連する問題