0
我有XML文件(我不得不把它簡化):無法讀取嵌套的XML標記的屬性(QXmlStreamReader)
<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
(屬性號線)和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;
}
工作時,內的代碼,如果不執行(xml.name()== 「期限」)。
第一代碼片段顯然是錯誤的,因爲第二次測試將不會執行 - 這是死代碼。第二個片段只要嵌入到設計正確的循環中就可以工作。也就是說,直到你發佈更完整的代碼來重現問題,我無法確定問題出在哪裏;你的第二個片段是好的,當且僅當它是其他代碼的一部分是正確的。 –