无法读取嵌套xml标记的属性(QXmlStreamReader)

时间:2015-08-14 15:59:34

标签: c++ xml qt qxmlstreamreader

我有XML文件(我必须简化它):

<Line line1_attr1 = "value1" line1_attr2 = "value2">
    <Term line1_term1_attr1 = "term1value1" line1_term1_attr2 = "term1value2">
        term content
    </Term>
    <Term line1_term2_attr1 = "term2value1" line1_term2_attr2 = "term2value2">
        term content
    </Term>
</Line>
<Line line2_attr1 = "value1" line2_attr2 = "value2">
    <Term line2_term1_attr1 = "term1value1" line2_term1_attr2 = "term1value2">
        term content
    </Term>
    <Term line2_term2_attr1 = "term2value1" line2_term2_attr2 = "term2value2">
        term content
    </Term>
</Line>

属性存储在两个QMaps中:mapString(Line的属性)和MapTerm(Term的属性)。 我可以读取Line标记的属性,但不能读取Term标记的属性。 不是这个

if(token == QXmlStreamReader::StartElement)
{
    if (xml.name() == "Line")
    {
        QXmlStreamAttributes attrib = xml.attributes();
        for(auto e : mapString->keys())
        {
              mapString->insert(e, attrib.value(e).toString());
        }
        continue;
        if (xml.name() == "Term")
        {
            QXmlStreamAttributes attrib = xml.attributes();
            for(auto e : mapTerm->keys())
            {
                  mapTerm->insert(e, attrib.value(e).toString());
            }
            continue;
        }                  
    }

也不是

if(token == QXmlStreamReader::StartElement)
{
    if (xml.name() == "Line")
    {
        QXmlStreamAttributes attrib = xml.attributes();
        for(auto e : mapString->keys())
        {
              mapString->insert(e, attrib.value(e).toString());
        }
        continue;       
    }
    if (xml.name() == "Term")
    {
        QXmlStreamAttributes attrib = xml.attributes();
        for(auto e : mapTerm->keys())
        {
              mapTerm->insert(e, attrib.value(e).toString());
        }
        continue;
    } 

正在运行, if(xml.name()==“Term”)中的代码未执行。

0 个答案:

没有答案