2
我已經看過各地的教程來解釋如何讓代碼合成xsd工作,如果您在系統中的文件中提供了xml,但我沒有能夠找到任何關於將xml作爲字符串提供的信息。代碼合成XSD解析/數據綁定xml字符串,而不是xml文件
我正在接收來自TCP連接的xml,我試圖用Code Synthesis xsd解析它,它看起來像是一個無用的附加步驟,當我已經將它作爲字符串存儲在內存中時,創建一個xml文件。
是的,這是用C++編寫的。
我已經看過各地的教程來解釋如何讓代碼合成xsd工作,如果您在系統中的文件中提供了xml,但我沒有能夠找到任何關於將xml作爲字符串提供的信息。代碼合成XSD解析/數據綁定xml字符串,而不是xml文件
我正在接收來自TCP連接的xml,我試圖用Code Synthesis xsd解析它,它看起來像是一個無用的附加步驟,當我已經將它作爲字符串存儲在內存中時,創建一個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是類型和根是你的XML的根元素的名稱。同樣的方法也適用於除系列化您使用std :: ostringstream:
#include <sstream>
std::ostringstream ostr;
root (ostr, *r, ...);
std::string str = ostr.str() // Output XML in a string.
請注意:在解析時驗證默認情況下,所以當.xsd文件不能是dreadded'實例文檔解析failed'拋出異常在可執行文件路徑中找到。爲了安全起見,我們可以試試:'root_(istr,xml_schema :: flags :: dont_validate);'。 – count0 2013-04-16 17:41:59
@ count0:您可以使用xml_schema :: properties指定XSD文件請參閱示例stackoverflow.com/a/11267720/757777 – 2013-04-24 19:16:03