2012-06-23 94 views
0

我已經在C++(GNU編譯器)中創建了一個包含100,000個員工記錄的二進制文件。現在我需要使用C++創建具有100,000個員工記錄的XML表。但我不知道如何使用C++代碼創建XML表。是否有任何示例代碼或教程可用於執行此程序?在C++中創建XML表

+1

您應該選擇一個XML庫並完成教程。關於「最好的XML庫」有很多問題,我的搜索挖掘10秒發生在一個以Windows爲中心的問題上,可能會幫助你,也可能不會幫助你 - http://stackoverflow.com/questions/2990903/best-xml-library- in-c-fast-setup-up - 但是如果你在另一個操作系統上,我建議你多搜索一下。抵制自己編寫代碼的誘惑,除非您準備確保使用正確的值轉義約定。 –

+0

XML沒有什麼特別或神奇的地方,它只是圍繞數據的文本。 –

+0

[我應該在C++中使用什麼XML解析器?](http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-c) –

回答

0

下面是簡單的人爲的例子

#include <iostream> 
#include <vector> 
#include <string> 

class Employee 
{ 
    public: 
     Employee(const std::string &firstname, const std::string &lastname, int salary) 
     :firstname_(firstname), lastname_(lastname), salary_(salary) 
     { 
     } 
     friend std::ostream &operator<<(std::ostream &os, const Employee &rhs) 
     { 
     rhs.print(os); 
     return os; 
     } 
    private: 
     void print(std::ostream &os) const 
     { 
     os << "<employee>"; 
     os << "<firstname>" << firstname_ << "</firstname>"; 
     os << "<lastname>" << lastname_ << "</lastname>"; 
     os << "<salary>" << salary_ << "</salary>"; 
     os << "</employee>\n"; 
     } 
     std::string firstname_; 
     std::string lastname_; 
     int salary_; 
}; 

int main(int argc, char *argv[]) 
{ 
    std::vector<Employee> staff; 

    staff.push_back(Employee("Peter", "Griffin", 10000)); 
    staff.push_back(Employee("Lois", "Griffin", 20000)); 
    staff.push_back(Employee("Chris", "Griffin", 30000)); 
    staff.push_back(Employee("Meg", "Griffin", 40000)); 
    staff.push_back(Employee("Stewie", "Griffin", 50000)); 
    staff.push_back(Employee("Brian", "Griffin", 60000)); 

    std::cout << "<staff>\n"; 
    for(std::vector<Employee>::const_iterator i=staff.begin(),end=staff.end(); i!=end; ++i) 
    { 
     std::cout << (*i); 
    } 
    std::cout << "</staff>\n"; 

    return 0; 
} 
+0

就像旁邊 - 誰投下了這個請解釋如何這是錯的;-) –

+1

我不是下來的選民,但這不能正確地逃脫任何領域 - 這意味着你打開你的自我到一個整個問題。它也不關注XML的「編碼」。 –

0

我建議使用XML序列化庫寫入數據到一個自定義的XML格式。

例如開源,MIT-許可C++庫libstudxml既提供了低級API

void start_element (const std::string& name); 
void end_element(); 
void start_attribute (const std::string& name); 
void end_attribute(); 
void characters (const std::string& value); 

和高級API

template <typename T> 
    void element (const T& value); 
template <typename T> 
    void characters (const T& value); 
template <typename T> 
    void attribute (const std::string& name, 
     const T& value); 

libstudxml documentation提到,其串行化源代碼起源於一個名爲Genx(也是MIT授權)的XML序列化的小型C庫。