侧边栏壁纸
博主头像
三味的小站博主等级

世界上没有偶然,有的只是必然的结果。

  • 累计撰写 61 篇文章
  • 累计创建 13 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
Qt

QDomDocument读取XML

三味线
2018-04-18 / 0 评论 / 0 点赞 / 10 阅读 / 1702 字
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();
    }
}

0

评论区