我正在開發一個C++項目,並希望從具有類似經驗的開發人員那裏獲得一些信息。從XML轉換爲C++對象
任務是連接到以XML形式提供結果的Web服務。我的任務是在接收到XML表單後,我需要將XML轉換爲C++對象並將XML數據解析爲C++對象。
以下是我的說明。
a)一種方法是手工整件事,但我需要爲數百種網絡服務做到這一點。我知道有更簡單的工具可以讓C#和Java來做同樣的事情。
C++中是否還有工具/實用工具?
任何建議,將有所幫助。
我正在開發一個C++項目,並希望從具有類似經驗的開發人員那裏獲得一些信息。從XML轉換爲C++對象
任務是連接到以XML形式提供結果的Web服務。我的任務是在接收到XML表單後,我需要將XML轉換爲C++對象並將XML數據解析爲C++對象。
以下是我的說明。
a)一種方法是手工整件事,但我需要爲數百種網絡服務做到這一點。我知道有更簡單的工具可以讓C#和Java來做同樣的事情。
C++中是否還有工具/實用工具?
任何建議,將有所幫助。
如果您問是否有辦法動態創建XML數據流的對象表示形式(例如,您可以像訪問topLevel.subObject.value一樣),這是不可能的。 C++是一種靜態類型語言,這意味着所有對象都需要在編譯時進行定義。你可以做的最好的就像這樣:xmlData.getSubObject(「objectName」)。getValue()。
至於解析爲動態可用的工具集(如我的後面的示例),有幾個。例如,對於Windows,您可以使用「內置」MSXML對象。就我所知,底層C++庫沒有這樣做。
希望有所幫助。
過去,我使用TinyXML來解析XML需求。我的解析代碼是在所有XML輸入符合我寫的特定XSD模式的假設下運行的。它工作得很好,但漣漪效應很煩人 - 如果我想更改XSD,我必須更新所有的XML測試文件以及解析代碼。雖然在解析一個模式的情況下它並沒有那麼糟糕,但我不想爲數百個模式做這件事。
我不確定常見的解決方案是什麼,但CodeSynthesis XSD聽起來很有希望。我沒有使用它,但它似乎爲您生成了數據層,解析器和序列化代碼。可以爲你節省很多時間。
當你說你需要將XML轉換成C++對象時,你究竟是什麼意思?這聽起來像你正在尋找一個C++ XML解析器?如果這是你正在尋找的東西,我可以推薦一些。我最近使用過RapidXML,對此非常滿意。過去也使用Xerces。 – 2010-10-31 00:57:40
@Guy聽起來像他正在尋找一個IoC容器,它可以通過讀取一個XML文件來創建。 – 2010-10-31 08:01:13