一 API介紹
writeStartDocument():寫文檔頭,作用類似於創建一個xml文檔,並在文檔開頭部分寫入版本信息和編碼信息,一般為: <?xml version="1.0" encoding="UTF-8"?>
writer.writeEndDocument():對應於writeStartDocument(),當調用這個函數時,即表示文檔信息寫入完畢
writeStartElement():寫入開始記號,即<>
writeEndElement():寫入結束記號,即</>
writeTextElement():寫入文本信息記號,如短信的發送人、短信內容、短信時間等
二 應用實例
我們以寫入message.xml為例,寫入數據后,xml文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<DATA>
<Sms>
<Name>wlc</Name>
<Number>18725658147</Number>
<Content>短信測試1</Content>
<Time>2012-07-25 23:54:10</Time>
</Sms>
<Sms>
<Name>rt</Name>
<Number>13555555555</Number>
<Content>短信測試2</Content>
<Time>2012-07-26 00:21:24</Time>
</Sms>
<Sms>
<Name>wzg</Name>
<Number>18656765434</Number>
<Content>短信測試3</Content>
<Time>2012-07-26 00:22:03</Time>
<Type>0</Type>
<Read>1</Read>
</Sms>
</DATA>
xml寫入數據的代碼如下,通過閱讀實例代碼,我們應該很容易理解第一步中介紹的API,以及API的調用順序。
- void MsgModel::save_messge()
- {
- QFile file("message.xml");
- if(file.open(QIODevice::WriteOnly | QIODevice::Text))
- {
- QXmlStreamWriter writer(&file);
- writer.setAutoFormatting(true);
- writer.writeStartDocument();
- writer.writeStartElement("DATA");
- std::multimap<QString, Message*>::iterator pos;
- for(pos = message_map->begin();pos != message_map->end();pos++)
- {
- Message *message = pos->second;
- writer.writeStartElement("Sms");
- writer.writeTextElement("Name", message->GetMsgName());
- writer.writeTextElement("Number", message->GetMsgPhone());
- writer.writeTextElement("Content", message->GetMsgContent());
- writer.writeTextElement("Time", message->GetMsgTime());
- writer.writeEndElement();
- }
- writer.writeEndElement();
- writer.writeEndDocument();
- file.close();
- }
- }