QDomDocument读取XML

MyXmlReader::MyXmlReader(QWidget *parent)
    : QDialog(parent)
{
    ui.setupUi(this);
    connect(ui.openBtn, SIGNAL(clicked()), this, SLOT(openFile()));
    ui.treeWid->setColumnCount(2);
    ui.treeWid->setColumnWidth(0,400);
}

MyXmlReader::~MyXmlReader()
{

}
void MyXmlReader::openXml(QString fileName)
{
    QFile file(fileName);
    if (file.open(QIODevice::ReadOnly))
    {
        QDomDocument dom("WCM");
        if (dom.setContent(&file))
        {
            ui.treeWid->clear();
            QDomElement docElem = dom.documentElement();
            listDom(docElem, NULL);
        }
    }
    file.close();
}
void MyXmlReader::openFile()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open XML File"), "C:/", tr("XML Files (*.xml)"));
    if (!fileName.isEmpty())
    {
        openXml(fileName);
    }
}
void MyXmlReader::listDom(QDomElement &docElem, QTreeWidgetItem *pItem)
{
    QDomNode node = docElem.firstChild();
    if (node.toElement().isNull())
    {
        pItem->setText(1, docElem.text());
    }
    while (!node.isNull())
    {
        QDomElement element = node.toElement();
        if (!element.isNull())
        {
            QTreeWidgetItem *item;
            if (pItem)
                item = new QTreeWidgetItem(pItem);
            else
                item = new QTreeWidgetItem(ui.treeWid);
            item->setText(0, element.tagName());
            listDom(element, item);
            if (pItem)
                pItem->addChild(item);
            else
                ui.treeWid->addTopLevelItem(item);
        }
        node = node.nextSibling();
    }
}

 

posted @ 2017-07-12 14:16  三味线、  阅读(1796)  评论(0编辑  收藏  举报