logplus/BaseFun/src/domdocument.cpp
2025-10-29 17:23:30 +08:00

139 lines
4.0 KiB
C++

#include <QDebug>
#include <QtXml\qdom.h>
#include "domdocument.h"
DomDocument::DomDocument(QString fileName)
{
m_fileName = fileName;
}
DomDocument::~DomDocument()
{
}
int DomDocument::writeXml()
{
QFile file(m_fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
return -2;
QTextStream out(&file);
QDomDocument doc;
QDomText text;
QDomElement element;
QDomAttr attr;
QDomProcessingInstruction instruction;
instruction = doc.createProcessingInstruction( "xml", "version = \'1.0\' encoding=\'UTF-8\'" );
doc.appendChild( instruction );
QDomElement root = doc.createElement( "COMMAND" );
doc.appendChild(root);
element = doc.createElement( "OBJECT" );
text = doc.createTextNode( "USER" );
element.appendChild(text);
root.appendChild(element);
element = doc.createElement( "ACTION" );
text = doc.createTextNode( "LOGIN" );
element.appendChild(text);
root.appendChild(element);
element = doc.createElement( "DATA" );
root.appendChild(element);
QDomElement userElement = doc.createElement( "USERINFO" );
attr = doc.createAttribute( "NAME" );
attr.setValue("root");
userElement.setAttributeNode(attr);
attr = doc.createAttribute( "PASSWORD" );
attr.setValue("123456");
userElement.setAttributeNode(attr);
element.appendChild(userElement);
doc.save(out, 4); //each line space of file is 4
return 0;
}
int DomDocument::readXml()
{
QDomDocument doc;
QFile file(m_fileName);
QString error = "";
int row = 0, column = 0;
if (!file.open(QIODevice::ReadOnly)) return -2;
if(!doc.setContent(&file, false, &error, &row, &column)){
// qDebug() << "parse file failed:" << row << "---" << column <<":" <<error;
file.close();
return -1;
}
file.close();
QDomElement root = doc.documentElement();
QDomNode node = root.firstChild();
while(!node.isNull()) {
QDomElement element = node.toElement(); // try to convert the node to an element.
if(!element.isNull()) {
// qDebug()<<element.tagName() << ":" << element.text();
QDomNode nodeson = element.firstChild();
while(!nodeson.isNull()) {
QDomElement elementson = nodeson.toElement();
if(!elementson.isNull()) {
//qDebug()<< "---" <<elementson.tagName();
if (elementson.hasAttribute("NAME")) {
//qDebug()<< "---" << "NAME=" << elementson.attributeNode("NAME").value();
}
if (elementson.hasAttribute("PASSWORD")) {
//qDebug()<< "---" << "PASSWORD=" << elementson.attributeNode("PASSWORD").value();
}
}
nodeson = nodeson.nextSibling();
}
}
node = node.nextSibling();
}
return 0;
}
int DomDocument::readXml2()
{
QDomDocument doc;
QFile file(m_fileName);
QString error = "";
int row = 0, column = 0;
if (!file.open(QIODevice::ReadOnly)) return -2;
if(!doc.setContent(&file, false, &error, &row, &column)){
//qDebug() << "parse file failed:" << row << "---" << column <<":" <<error;
file.close();
return -1;
}
file.close();
QDomElement root = doc.documentElement();
QDomNode node = root.firstChildElement();
while(!node.isNull()) {
QDomElement element = node.toElement(); // try to convert the node to an element.
if(!element.isNull()) {
if (element.tagName() == "DATA") {
//qDebug()<< "---" <<element.tagName();
QDomNodeList list = element.childNodes();
for(int index = 0; index < list.count(); index++) {
QDomNode list_node = list.item(index);
QDomElement list_element = list_node.toElement();
if (list_element.hasAttribute("NAME")) {
//qDebug()<< "---" << "NAME =" << list_element.attributeNode("NAME").value();
}
if (list_element.hasAttribute("PASSWORD")) {
//qDebug()<< "---" << "PASSWORD =" << list_element.attributeNode("PASSWORD").value();
}
}
}
else {
//qDebug()<<element.tagName() << ":" << element.text();
}
}
node = node.nextSibling();
}
return 0;
}