システム上のファイルにxmlを提供する場合にコード合成xsdを機能させる方法を説明するチュートリアルをいたるところで見ましたが、xmlを文字列として提供することについて何も見つけることができませんでした。
TCP 接続から xml を受信し、それをコード合成 xsd で解析しようとしていますが、xml ファイルを文字列としてメモリに既に持っている場合、xml ファイルを作成するための無駄な追加手順のように思えます。
はい、これは C++ です。
システム上のファイルにxmlを提供する場合にコード合成xsdを機能させる方法を説明するチュートリアルをいたるところで見ましたが、xmlを文字列として提供することについて何も見つけることができませんでした。
TCP 接続から xml を受信し、それをコード合成 xsd で解析しようとしていますが、xml ファイルを文字列としてメモリに既に持っている場合、xml ファイルを作成するための無駄な追加手順のように思えます。
はい、これは C++ です。
std::istringstream を使用して、文字列を std::istream として表示し、それを解析できます。
#include <sstream>
std::string str = ... // Input XML in a string.
std::istringstream istr (str);
std::auto_ptr<root_type> r = root (istr);
ここで、root_type はタイプで、root は XML のルート要素の名前です。std::ostringstream を使用することを除いて、同じアプローチがシリアライゼーションにも機能します。
#include <sstream>
std::ostringstream ostr;
root (ostr, *r, ...);
std::string str = ostr.str () // Output XML in a string.