该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
QDomDocument dom;
QFile *file = new QFile("books.xml");
if (file->open(QIODevice::ReadOnly))
{
dom.setContent(file); // 此处需做错误判断
}
file->close(); // 以下代码为解析XML文件中的内容
QDomNodeList books = dom.elementsByTagName("book");
for (int i = 0; i < books.count(); i++) {
QDomNode book = books.item(i);
if (book.toElement().attribute("ISBN") == isbn) { // 查找ISBN匹配的属性,isbn由用户指定
QDomNodeList attribs = book.toElement().childNodes(); QDomNode node;
QString attribNumber,attribContent;
for (int j = 0; j < attribs.count(); j++) {
node = attribs.item(j);
attribNumber = node.toElement().attribute("number");
attribContent = node.toElement().text();
// 在此可添加代码对attribNumber,attribContent作出处理了.
}
break;
}
} // 以下代码为写内容进XML文件
QStringList attribs = ""; // 由用户指定
QDomElement bookNode = dom.createElement("book");
carNode.setAttribute("ISBN", isbn); // isbn由用户指定 //此处开始处理attribs字符串列表中的内容
for (int i = 0; i < attribs.count(); i++) {
QString attribNumber = QString::number(i+1); // 内容的序号: 01 02
if (i < 10)
attribNumber.prepend("0"); QDomText textNode = dom.createTextNode(attribs.at(i)); // 取出每一个字符串 QDomElement attribNode = dom.createElement("attrib");
attribNode.setAttribute("number", attribNumber);
attribNode.appendChild(textNode); carNode.appendChild(attribNode); // 属性结束
} QDomNodeList archive = carDetails.elementsByTagName("archive");
archive.item(0).appendChild(carNode); // 写入XML文件中
if (file->open(QIODevice::WriteOnly)) {
QTextStream stream(file);
archive.item(0).save(stream, 4);
file->close();
} <?xml version="1.0" encoding="gb2312" ?>
书名:C++模板元编程(C++ 领域扛鼎之作,荣耀先生倾情翻译,名著名译)
价格:55元
作者:(美)David Abrahams;Aleksey Gurtovoy
出版社:机械工业出版社
出版日期:2010-01-01