node_pcdataの値を設定すると、pugixmlが無効な文字を追加しているようです。コードは以下の通りです。私がしようとしているのは、base-64をPNGでエンコードしてXMLで送信することです。私はbase-64でエンコードされたテキストをファイルに書き込んでpugixmlとは別にチェックしてみたところ、有効な文字である4AAAAASUVORK5CYII=
で終わります。しかし、ndAvatarData.set_value(avatarEnc)
コールは、同じ実行で無効な文字を追加しています4AAAAASUVORK5CYII= cY 3XA+Рz
。ときどき結果は有効ですが、私はそれを繰り返すことができませんでしたので、pugiの出力がどのようなものかわかりません。pugixml node_cdata、node_pcdata set_value()無効な文字
私はここで何かする必要がありますか?これはpugixmlの既知の問題ですか?私は検索しましたが、この問題について議論するものは見つかりませんでした。
私は、Visual C++で、2010年
char* avatarEnc = NULL;
try {
std::ifstream avatarIn("MyAvatar.png", std::ios_base::in | std::ios_base::binary);
if (!avatarIn.is_open())
cerr << "Could not open avatar file!";
else {
base64::encoder E;
stringstream avatarOut;
E.encode(avatarIn, avatarOut);
avatarOut.seekg(0, ios::end);
int avatarEncSize = avatarOut.tellg();
avatarOut.seekg(0, ios::beg);
avatarEnc = new char[avatarEncSize];
avatarOut.read(avatarEnc, avatarEncSize);
std::ofstream tempOut("avatarEnc.txt", std::ios_base::out | std::ios_base::binary);
tempOut.write(avatarEnc, avatarEncSize);
xml_node ndAvatar = root.append_child("avatar");
xml_node ndAvatarData = ndAvatar.append_child(pugi::node_pcdata);
ndAvatarData.set_value(avatarEnc);
}
}
catch (...) {
cerr << "Error loading avatar.";
}