との違いがわからないので、XMLString::transcode(XMLCh*)
との目的がわからないようです。誰かが私のために物事をより明確にしてくれませんか?XMLString::transcode(char*)
XMLCh*
char*
18764 次
1 に答える
28
Xercesは、情報をUTF-16として内部的にエンコードします。UTF-16データは、XMLCh
データ型を使用して格納されます。
ローカルコードページにある「Cスタイル」の文字列を使用char
します(おそらくUTF-8ですが、プラットフォームと設定によって異なります)transcode
。この2つを変換するために使用します。
たとえば、Xercesから別のライブラリにデータをフィードする必要があり、そのライブラリがローカルコードページのテキストを想定している場合は、それを行う必要がありますtranscode
。また、char
データがあり、それをXercesにフィードする場合は、Xercesが理解しているので、transcode
データを送信する必要があります。XMLCh
例えば:
// to local code page
DOMNode *node = ...;
char* temp = XMLString::transcode(node->getNodeValue());
std::string value(temp);
XMLString::release(&temp);
// from local code page
DOMElement *element = ...;
XMLCh *tag = XMLString::transcode("test");
DOMNodeList *list = element->getElementsByTagName(tag);
XMLString::release(&tag);
文字列を解放することを忘れないでください!その周りにラッパーを作成することをお勧めしますが、インターネット上に利用可能な例があります(という名前のクラスを検索するだけですXercesString
)。
エンコーディングについてもっと知りたい場合は、「絶対最小」を読む必要があると思います。すべてのソフトウェア開発者は絶対に、Unicodeと文字セットについて積極的に知っている必要があります(言い訳はありません!)
于 2012-03-22T20:52:18.273 に答える