Question

PUGIXML semble ajouter des caractères invalides lorsque je définis la valeur d'un node_pcdata. Le code est ci-dessous. Ce que j'essaie de faire, c'est que la base-64 codera un PNG et l'envoie via XML. J'ai écrit le texte encodé de base-64 dans un fichier pour le vérifier séparément de PUGIXML, et il a l'air bien, se terminant par ces caractères valides 4AAAAASUVORK5CYII=. Mais le ndAvatarData.set_value(avatarEnc) L'appel ajoute des caractères non valides pour la même course 4AAAAASUVORK5CYII= cY 3XA+Рz. Parfois, le résultat est valide, mais je n'ai pas pu répéter cela, donc je ne sais pas à quoi ressemble la sortie Pugi dans ce cas.

Y a-t-il quelque chose que je dois faire ici? Est-ce un problème connu avec PUGIXML? J'ai cherché mais je n'ai rien trouvé en discutant de ce problème.

Je reçois ceci dans 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.";
}

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top