我在使用QXmlStreamReader获取嵌套标记的值时遇到了一个问题。我的xml如下:
<?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>我就是不能为其他属性中的标签属性获取值:
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。
发布于 2019-12-13 18:03:09
我自己找到了解决方案--如果有人遇到类似的问题,这里是工作代码:
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();
}进入控制台:
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"https://stackoverflow.com/questions/59320036
复制相似问题