2016-11-04 50 views
0

假设我有一个XML文件的数据如下:如何使用QXMLStreamReader跳过XML文件读取到当前父元素的结尾?

<Parent-1> 
     <Child-1>Info-1</Child-1> 
     <Child-2>Info-2</Child-2> 
     <Child-3>Info-3</Child-3> 
</Parent-1> 
<Parent-2> 
     <Child-1>Info-1</Child-1> 
     <Child-2>Info-2</Child-2> 
     <Child-3>Info-3</Child-3> 
</Parent-2> 
<Parent-3> 
     <Child-1>Info-1</Child-1> 
     <Child-2>Info-2</Child-2> 
     <Child-3>Info-3</Child-3> 
</Parent-3> 

当我读从一开始的文件,首先我读开始元素家长1,然后它的第一个孩子儿童-1及其文字信息-1

如果家长-1 /儿童1信息-1等于某一特定值,如:SKIP的话,我想跳过整个家长1元素,阅读next parent element Parent-2

据我所知,QXMLStreamReader仅提供skipCurrentElement()readNextStartElement(),这将读取直到下一个开始元素,在我的情况家长1儿童2

有什么办法可以跳过整个父元素吗?任何帮助深表感谢。

在此先感谢。

回答

0

如果调用skipCurrentElement()两次不工作,你应该很容易能够用一个简单的循环

while (!isEndElement() || name() != "Parent-1") { 
    readNext(); 
} 
+0

这不是一个充分的答案,因为它没有考虑树的深度考虑跳过。这里有一个简单的反例:'信息-1' – MrEricSir

+0

的问题的例子不具有这种结构,也没有在文中针对任何迹象或者, –

+0

谢谢@KevinKrammer。幸运的是,我的XML文件没有这样的嵌套标签结构。再次提出一个小问题:是否有任何方法可以在不使用_readNext()_在循环中读取所有行的情况下使用QXMLStreamReader来结束文件? – Yarram

相关问题