如何计算xml文件中的父项(或条目)?
下面的XML应该显示我不知道那里的条目,所以我需要计算标记以在循环中使用它们并将它们保存在QVector中。从那里开始,我可以在xml中搜索(现在已知的)标签并获取子项和属性(但这是另一回事)。 第一步是统计父母。
如果有人有更好的解决方案,那么请告诉我!
<?xml version="1.0" encoding="UTF-8" ?>
<Content>
<person1>
<firstname>John</firstname>
<surname>Doe</surname>
<email>john.doe@example.com</email>
<website>http://en.wikipedia.org/wiki/John_Doe</website>
</person1>
<person2>
<various>Some Text here.</various
<website>http://www.google.com</website>
</person2>
<person3>
<firstname>Jane</firstname>
<surname>Doe</surname>
<email>jane.doe@example.com</email>
<website>http://en.wikipedia.org/wiki/John_Doe</website>
</person3>
<person4>
<firstname>Matti</firstname>
<surname>Meikäläinen</surname>
<email>matti.meikalainen@example.com</email>
<website>http://fi.wikipedia.org/wiki/Matti_Meikäläinen</website>
</person4>
<person5 Attribute="Test">
</person5>
</Content>
我试图打开文件并在每行搜索一行时搜索一个RegExp(成功率较低),就像在bash中一样。但是Qt4的XML函数必须有更好的解决方案。有什么建议吗?
答案 0 :(得分:1)
看看这个:http://www.digitalfanatics.org/projects/qt_tutorial/chapter09.html 我更喜欢这个例子:http://jingfenghanmax.blogspot.de/2009/10/simple-qt-sax-parser.html
对于每个首发人员#-tag ,我会检索该人的整个数据集,以便在向量中推送此对象。最后,在解析XML之后,您只需要myVector.size();
这解决了我。
答案 1 :(得分:0)
我找到了解决方案。它不是很好但是有效:
QFile* file = new QFile("SomeFile.xml");
QXmlStreamReader xml(file);
QString ElementName = "Content";
QString ElementName_2 = "Content";
int i = 0;
int k = 0;
while( !xml.atEnd() && !xml.hasError() )
{
QXmlStreamReader::TokenType token = xml.readNext();
if( token == QXmlStreamReader::StartElement )
{
if( xml.name().toString() != ElementName )
{
ElementName = xml.name().toAscii();
}
if( xml.name().toString() == ElementName_2 )
{
ElementName = xml.name().toAscii();
}
}
if( token == QXmlStreamReader::EndElement )
{
if( xml.name().toString() == ElementName )
{
i++;
}
if( xml.name().toString() != ElementName_2 )
{
k++;
}
}
}
if(xml.hasError())
{
SCC_MsgBox(QString("%1 parsing error").arg(XMLname), "", xml.errorString(), "", 2, 3); // my own MsgBox implementation ...
return 0;
}
else
{
i = k - i;
return i;
}
xml.clear();
这个计算所有元素(k)和所有Childs(i)并减去Elements中的Childs。所以我得到了条目数量(在这种情况下的人)。如果有人有更好的解决方案,那么请发布。