2017-10-29 13 views
0

対応するISOコードを含むXMLテキストファイル内にラテン語のアクセントを書いてみたいと思います。 たとえば、éは、ファイル上でéに置き換えられます。 私の問題は私の最初の&はXml.Linqによってエスケープされます。 結果は&#amp;233;です。ISOファイルのアクセントをXMLファイルに書き込む方法は?

internal void SaveCurrentFile(XElement root) 
{ 
    var encoding = Encoding.GetEncoding("ISO-8859-1"); 
    XmlWriterSettings xmlWriterSettings = new XmlWriterSettings 
    { 
     Indent = true, 
     OmitXmlDeclaration = false, 
     Encoding = encoding 
    }; 
    using (var writer = XmlWriter.Create(GetFolderPath() + "test.xml", xmlWriterSettings)) 
    { 
     root.Save(writer); 
    } 
} 

私はXmlWriterSettingsで何か助けになるオプションが見つかりませんでした。

ありがとうございました。

+0

実際に何もする必要はありません。文字を普通に書き、UTF8を使用するようにしてください。 – SLaks

+1

'Encoding.ASCII'で書くことができます。そうした場合、非ASCII Unicode文字は、[UTF-8でXMLを書き込んでいてもXmlElementのUnicode文字列をエスケープする](https://stackoverflow.com/q/18006146/3744182)のようにエスケープされます。 – dbc

+0

私はUTF8を使用できませんでした(個人的な制約のため)が、ASCIIエンコーディングではうまく見えます。 ありがとうございました! – M07

答えて

1

数値エンティティ参照は、Unicodeコードポイントです。例えば、
🚲 (U + 1F6B2)に対して。 é é(U + 00E9)となります。数値エンティティの参照は、通常、文書のエンコーディングが特定のUnicodeコードポイントをサポートしていない場合にのみ使用されます。 XMLライターがこれを世話します。

éを数値文字エンティティとして出力するには、éをサポートしていないドキュメントエンコーディングを使用するだけです。 ASCIIは1です。ただし、小数点以下(é)ではなく、おそらく16進数(é)になります。

+0

それは正しいです。私は入力が(é)であることを見てきましたが、16進数でも私にとっては問題ありません。 – M07

関連する問題