簡體   English   中英

在C ++程序中讀取XML文件

[英]reading an XML file in a C++ program

我正在嘗試在我的C ++程序中讀取XML文件。 XML文件看起來像這樣:

<?xml version="1.0" encoding="utf-8"?>
<myprogram>
<configuration>
<window>
<height> 300 </height>
<width> 500 </width>
</window>
</configuration>
</myprogram>

現在我可以查看XML文件並嘗試按如下方式閱讀:

ifstream in("mydata.xml");

//ignore the <?xml line
in.ignore(200, '\n');

//i know that the first value i want is the window height so i can ignore <myprogram> <configuration> and <window>

//ignore <myprogram>
in.ignore(200, '\n');

//ignore <configuration>
in.ignore(200, '\n');

//ignore <window>
in.ignore(200, '\n');

string s; int height;

//okay, now i have my height
in >> s >> height;

一般來說,這似乎是個壞主意,它確實限制了XML文件的修改方式。 上面的解決方案是非常手動的,如果XML中的任何內容發生變化,似乎必須更改整個讀取方法。

有一個更好的方法嗎?

您可以使用一些可以為您完成的庫。 如果您使用的是Windows平台,則可以使用MSXML ,它已經是系統的一部分。

檢查這個問題: 在C ++中讀寫XML文件

其他流行的庫:

您將需要一個XML Parser。 那里有一堆:

我個人最喜歡的是pugiXML,但這是個人喜好的問題。

您可以使用具有解析XML功能的POCO庫

boost屬性樹適用於xml,我會用它。

在多平台源代碼中,我通常使用Qt XML閱讀器。

您有3種閱讀方式:

  1. Qt核心QXmlStreamReader - Qt讀取XML的方式
  2. SAX2閱讀器 - 帶內容處理類的標准SAX2閱讀器
  3. DOM閱讀器 - 帶有XML節點的DOM文檔閱讀器

如果您只編寫Windows軟件,則應使用MSXML 6.由於Windows XP SP3 MSXML 6.0是操作系統的一部分。

在Linux上,你應該使用libxml2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM