2012-04-05 61 views
2

我已經看過各地的教程來解釋如何讓代碼合成xsd工作,如果您在系統中的文件中提供了xml,但我沒有能夠找到任何關於將xml作爲字符串提供的信息。代碼合成XSD解析/數據綁定xml字符串,而不是xml文件

我正在接收來自TCP連接的xml,我試圖用Code Synthesis xsd解析它,它看起來像是一個無用的附加步驟,當我已經將它作爲字符串存儲在內存中時,創建一個xml文件。

是的,這是用C++編寫的。

回答

2

您可以使用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. 
+1

請注意:在解析時驗證默認情況下,所以當.xsd文件不能是dreadded'實例文檔解析failed'拋出異常在可執行文件路徑中找到。爲了安全起見,我們可以試試:'root_(istr,xml_schema :: flags :: dont_validate);'。 – count0 2013-04-16 17:41:59

+0

@ count0:您可以使用xml_schema :: properties指定XSD文件請參閱示例stackoverflow.com/a/11267720/757777 – 2013-04-24 19:16:03