Qt学习:QDomDocument
生活随笔
收集整理的這篇文章主要介紹了
Qt学习:QDomDocument
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QDomDocument類代表了一個XML文件
QDomDocument類代表整個的XML文件。概念上講:它是文檔樹的根節點,并提供了文檔數據的基本訪問方法。
由于元素、文本節點、注釋、指令執行等等不可能脫離一個文檔的上下文,所以文檔類也包含了需要用來創建這些對象的工廠方法。被創建的節點對象有一個ownerDocument()函數,它將對象與對象常見的文檔上下文環境關聯起來。DOM類中最常使用的是QDomNode、QDomDocument、QDomElement和QDomText。
解析后的XML文件在內部是通過一個對象樹來表示的,對象樹可以使用各種QDom類進行訪問。所有的QDom類只引用內部樹上的對象。一旦最后一個DOM樹的QDom對象和QDocument本身被刪除掉時,DOM樹上的所有內部對象會被刪除掉。
元素、文本節點等的創建是通過使用類提供的各種工廠方法完成的。使用QDom類的缺省構造函數只會生成空的對象,這些空的對象不能操作,也不能哈如到文檔中。
QDomDocument類有一些創建文檔數據的函數,例如:createElement(),createTextNode(),createComment(),createCDATASection(),
createProcessingInstruction(),createAttribute(),和createEntityReference().其中一些函數含有支持名字空間的版本,例如:createElementNS()和createAttributeNS().函數createDocumentFragment()用來持有文檔的部分內容,這對于處理復雜文檔很有用。
使用setContent設置文檔的全部內容。該函數解析傳入的XML文檔字符串并創建代表文檔的DOM樹。根節點可以使用documentElement()得到。文檔的文本呈現可以使用toString()函數得到。
可以使用importNode()將其它文檔的節點插入到當前文檔中。
你可以使用elementsByTagName()和elementsByTagNameNS()來獲取所有元素中含有特定標簽的列表。
QDom類的典型使用方法如下:
QDomDocument doc("mydocument"); QFile file("mydocument.xml"); if (!file.open(QIODevice::ReadOnly)) return; if (!doc.setContent(&file)) {
? ? file.close(); return; } file.close();
//打印出最外層元素所有直接的子節點的元素名稱 QDomElement docElem = doc.documentElement(); QDomNode n = docElem.firstChild(); while (!n.isNull()) { QDomElement e = n.toElement(); //將節點轉換為元素 if (!e.isNull()) { cout<<qPrintable(e.tagName())<<endl; } n = n.nextSibling(); }
// 在文檔的結尾添加一個新的元素 QDomElement elem = doc.createElement("img"); elem.setAttribute("src", "myimage.png"); docElem.appendChild(elem);
一旦doc和elem出了范圍,整個的代表XML文檔的內部樹都會刪除掉。
使用DOM代碼創建一個文檔如下: QDocument doc("MyML"); QDomElement root = doc.createElement("MyML"); doc.appendChild(root);
QDomElement tag = doc.createElement("Greeting"); root.appendChild(tag);
QDomText t = doc.createTextNode("Hello World"); tag.appendChild(t);
QString xml = doc.toString();
QDomDocument doc("mydocument"); QFile file("mydocument.xml"); if (!file.open(QIODevice::ReadOnly)) return; if (!doc.setContent(&file)) {
? ? file.close(); return; } file.close();
//打印出最外層元素所有直接的子節點的元素名稱 QDomElement docElem = doc.documentElement(); QDomNode n = docElem.firstChild(); while (!n.isNull()) { QDomElement e = n.toElement(); //將節點轉換為元素 if (!e.isNull()) { cout<<qPrintable(e.tagName())<<endl; } n = n.nextSibling(); }
// 在文檔的結尾添加一個新的元素 QDomElement elem = doc.createElement("img"); elem.setAttribute("src", "myimage.png"); docElem.appendChild(elem);
一旦doc和elem出了范圍,整個的代表XML文檔的內部樹都會刪除掉。
使用DOM代碼創建一個文檔如下: QDocument doc("MyML"); QDomElement root = doc.createElement("MyML"); doc.appendChild(root);
QDomElement tag = doc.createElement("Greeting"); root.appendChild(tag);
QDomText t = doc.createTextNode("Hello World"); tag.appendChild(t);
QString xml = doc.toString();
總結
以上是生活随笔為你收集整理的Qt学习:QDomDocument的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Github(5)-开源开发-常见错误
- 下一篇: Python(3)-Pycharm基本使