14

との違いがわからないので、XMLString::transcode(XMLCh*)との目的がわからないようです。誰かが私のために物事をより明確にしてくれませんか?XMLString::transcode(char*)XMLCh*char*

4

1 に答える 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 に答える