文字列「Test €」を「Test € ;」に変換する必要があります。およびその逆。xml からではなく文字列であることに注意してください。参考までに、私は C++ でアプリケーションを開発しており、XML 解析にも Xerces を使用しています。C ++アプリケーションでどのように達成できるか教えてください。
ありがとう、ラム
確かなことはわかりませんが、この答えはプラットフォームに依存する可能性があると思います。
文字列ストリームとキャストを使用できます。lookup
が文字コードの 10 進バージョンを保持する文字列の場合、この関数は文字バージョンを返します。
char fixchar(string lookup){
stringstream converter (lookup);
int i;
converter >> dec >> i;
return (char)i
#x
(の代わりにがプレフィックスとして付いている 16 進文字列の場合は、 の代わりに使用できることに注意してください#
) 。hex
dec
元の文字列に対して関数をlookup
使用して文字列を取得できます。上記の関数を使用して、部分文字列を含む文字列 ( と呼ばれる) を文字コードのない通常の文字列find
に変換するループを次に示します。fixd
&#x[number]
while (fixd.find("&#x")!=string::npos){
tag = int(fixd.find("&#"));
endtag = int(fixd.find(";"));
fixd = fixd.substr(0,tag) + fixchar(fixd.substr(tag+3,endtag-tag-3)) + fixd.substr(endtag+1, fixd.length()-tag-4);
}
同様に、文字をキャストするだけで文字の int バージョンを取得できるはずです。その後、文字列に 10 進形式で追加するなど、好きなことを行うことができます。