首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QXmlStreamReader获取标记值

QXmlStreamReader获取标记值
EN

Stack Overflow用户
提问于 2019-12-13 17:55:32
回答 1查看 141关注 0票数 1

我在使用QXmlStreamReader获取嵌套标记的值时遇到了一个问题。我的xml如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Class Name="Simple1">
    <Property Name="FloatValue" Type="Float">14.45</Property>
    <!-- komentarz -->
    <Property Name="IntegerValue" Type="Integer">-23049</Property>
    <Property Name="UnsignedValue" Type="Unsigned">123</Property>   
</Class>

<Class Name="Simple2">
    <Property Name="TestEmbed" Type="Embed" SubType="Simple1">
        <Property Name="FloatValueEmbed" Type="Float">1.2</Property>
        <Property Name="IntegerValueEmbed" Type="Integer">10</Property>
        <Property Name="UnsignedValueEmbed" Type="Unsigned">20</Property>        
    </Property>
    <Property Name="FloatValue" Type="Float">55.55</Property>
    <Property Name="IntegerValue" Type="Integer">-1111</Property>
    <Property Name="UnsignedValue" Type="Unsigned">888</Property>
</Class>
</root>

我就是不能为其他属性中的标签属性获取值:

代码语言:javascript
复制
        while (reader.readNextStartElement())
        {
            qDebug() << "Found tag: " << reader.name() << "text: " << reader.text() << "token: " << reader.tokenString();// THIS PART WORKS WRONG << "tag value: " << reader.readElementText(); //tried IncludeChildElements too
            for (auto &attribute : reader.attributes())
            {
                qDebug() << "attribute name: " << attribute.name() << ", attribute value: " << attribute.value();
            }
            reader.skipCurrentElement();
        }

怎么了?正确读取并列出了类Simple1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-13 18:03:09

我自己找到了解决方案--如果有人遇到类似的问题,这里是工作代码:

代码语言:javascript
复制
while (reader.readNextStartElement())
{
    qDebug() << "Found tag: " << reader.name() << "text: " << reader.text() << "token: " << reader.tokenString();
    for (auto &attribute : reader.attributes())
    {
        qDebug() << "attribute name: " << attribute.name() << ", attribute value: " << attribute.value();
    }
    reader.readNext();
    qDebug() << "tag value:" << reader.text();
    reader.skipCurrentElement();
}

进入控制台:

代码语言:javascript
复制
Found tag:  "Property" text:  "" token:  "StartElement"
attribute name:  "Name" , attribute value:  "FloatValueEmbed"
attribute name:  "Type" , attribute value:  "Float"
tag value: "1.2"
Found tag:  "Property" text:  "" token:  "StartElement"
attribute name:  "Name" , attribute value:  "IntegerValueEmbed"
attribute name:  "Type" , attribute value:  "Integer"
tag value: "10"
Found tag:  "Property" text:  "" token:  "StartElement"
attribute name:  "Name" , attribute value:  "UnsignedValueEmbed"
attribute name:  "Type" , attribute value:  "Unsigned"
tag value: "20"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59320036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档