【问题标题】:How to get last node of XML file in QT?如何在 QT 中获取 XML 文件的最后一个节点?
【发布时间】:2016-12-28 10:20:49
【问题描述】:

在我当前的项目中,我正在使用 QDomDocument 类解析 XML 文件。我的 XML 文件如下所示:

<string>
<Data>
    <Details>
        <Content>
            <Name>James</Name>
            <DOB>30/09/1980</DOB>
            <MobileNo/>
            <Address>USA</Address>
        </Content>
        <Content>
            <Name>Ram</Name>
            <DOB>30/09/1995</DOB>
            <MobileNo>9876543210</MobileNo>
            <Address>India</Address>
        </Content>
        <Content>
            <Name>Jack</Name>
            <DOB/>
            <MobileNo>9876543210</MobileNo>
            <Address>UK</Address>
        </Content>
    </Details>
</Data>

在 XML 文件中的 &lt;Content&gt; 标记数。我如何打印最后一个 &lt;Content&gt; 标签及其所有数据和相应的标签名称。我的输出将是:

<Content>
      <Name>Jack</Name>
      <DOB/>
      <MobileNo>9876543210</MobileNo>
      <Address>UK</Address>
</Content>

谁能给我一些在 QT(C++) 中工作的示例代码

【问题讨论】:

    标签: c++ xml qt parsing qdomdocument


    【解决方案1】:

    我还没有实际测试过,所以代码中可能有一些错误。但是查看 Qt 文档here,我相信您应该能够通过执行以下操作来实现您的目标:

    QDomDocument doc = // ...
    QDomElement root = doc.firstChildElement("string");
    QDomElement elt = root.firstChildElement("Data")
            .firstChildElement("Details")
            .lastChildElement("Content");
    
    QDomNamedNodeMap nma = elt.attributes();
    int nmaLength = nma.length();
    for (int i=0; i<nmaLength; ++i) {
        QDomAttr attr = nma.item(i).toAttr();
        qDebug() << attr.name().toLocal8Bit().constData() << ": " 
                << attr.value().toLocal8Bit().constData();
    }
    

    【讨论】:

    • 感谢您的宝贵时间和回复。对我来说,你的 for 循环不起作用。它打印空白输出,并且 nma.lenght() 的输出为零。如果我手动设置 nmaLenght=10,则在输出中打印 10 个空白行
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多