Qt的Dom来操作XML文档
2009-06-19 11:46
597 查看
Qt有三种方式读取并解析XML文档,同样有三种方式写XML,不过在下还是喜欢标准,所以使用DOM方式来解析和保存XML文档
首先是读取XML
1 QFile file(fileName);
2 if (!file.open(QFile::ReadOnly | QFile::Text)) {
3 return false;
4 }
5 QString errorStr;
6 int errorLine;
7 int errorColumn;
8
9 QDomDocument doc;
if (!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn)) {
return false;
}
QDomElement root = doc.documentElement();
if (root.tagName() != "root") {
return false;
}
parseElement(root);
file.close(); 获取跟节点,然后把这个根节点交给其他函数去解析就OK
然后是写xml
1 QFile file(fileName);
2 if (!file.open(QFile::ReadOnly | QFile::Text))
3 return false;
4 QString errorStr;
5 int errorLine;
6 int errorColumn;
7 QDomDocument doc;
8 if (!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn))
9 return false;
file.close();
QDomElement root = doc.documentElement();
if (root.tagName() != "root")
return false;
QDomElement element = doc.createElement("file");
QDomElement el_address = doc.createElement("address");
QDomText text_address = doc.createTextNode(address);
el_address.appendChild(text_address);
element.appendChild(el_address);
QDomElement el_path = doc.createElement("path");
QDomText text_path = doc.createTextNode(path);
el_path.appendChild(text_path);
element.appendChild(el_path);
root.appendChild(element);
QFile f(fileName);
if (!f.open(QFile::WriteOnly | QFile::Text))
return false;
QTextStream out(&f);
// element->save(out, 3);
root.save(out, 3);
// doc.save(out, 3);
f.close(); 这里所有需要append的字节点只能由QDomDocument对象create,而不能直接new它,否则永远也看不到新添加的节点,另外,读取和写入的文件流必须创建两个,否则必然回将需要写入的文档继续在原来人当的后面,造成多个根节点。
首先是读取XML
1 QFile file(fileName);
2 if (!file.open(QFile::ReadOnly | QFile::Text)) {
3 return false;
4 }
5 QString errorStr;
6 int errorLine;
7 int errorColumn;
8
9 QDomDocument doc;
if (!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn)) {
return false;
}
QDomElement root = doc.documentElement();
if (root.tagName() != "root") {
return false;
}
parseElement(root);
file.close(); 获取跟节点,然后把这个根节点交给其他函数去解析就OK
然后是写xml
1 QFile file(fileName);
2 if (!file.open(QFile::ReadOnly | QFile::Text))
3 return false;
4 QString errorStr;
5 int errorLine;
6 int errorColumn;
7 QDomDocument doc;
8 if (!doc.setContent(&file, false, &errorStr, &errorLine, &errorColumn))
9 return false;
file.close();
QDomElement root = doc.documentElement();
if (root.tagName() != "root")
return false;
QDomElement element = doc.createElement("file");
QDomElement el_address = doc.createElement("address");
QDomText text_address = doc.createTextNode(address);
el_address.appendChild(text_address);
element.appendChild(el_address);
QDomElement el_path = doc.createElement("path");
QDomText text_path = doc.createTextNode(path);
el_path.appendChild(text_path);
element.appendChild(el_path);
root.appendChild(element);
QFile f(fileName);
if (!f.open(QFile::WriteOnly | QFile::Text))
return false;
QTextStream out(&f);
// element->save(out, 3);
root.save(out, 3);
// doc.save(out, 3);
f.close(); 这里所有需要append的字节点只能由QDomDocument对象create,而不能直接new它,否则永远也看不到新添加的节点,另外,读取和写入的文件流必须创建两个,否则必然回将需要写入的文档继续在原来人当的后面,造成多个根节点。
相关文章推荐
- qt xml之DOM方式来操作XML文档
- [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档
- JAVASCRIPT中使用DOM操作XML文档
- JAVASCRIPT中使用DOM操作XML文档
- 【XML解析】(2)利用DOM解析技术对XML文档进行增删改查操作
- 使用 DOM 操作 XML 文档
- jaxp解析器用dom方式操作xml文档的总结
- PHP DOM操作xml文档,添加元素,添加元素属性
- 解析php DOMElement 操作xml 文档的实现代码
- java操作xml文档(一) DOM方式
- JAVASCRIPT中使用DOM操作XML文档
- DOM操作XML文档
- JAVASCRIPT中使用DOM操作XML文档
- java 使用DOM对XML文档进行增删改查操作
- Javascript利用DOM操作XML文档
- jaxp解析器用dom方式操作xml文档的总结
- java对XML文档的操作之dom(使用jaxp,sun公司的自带包)
- PHP DOM操作xml文档,删除一个,遍历删除所有(注意有陷阱)
- JAVASCRIPT中使用DOM操作XML文档