...
<example name="example text"/>
...
В XML куча вложений и элементов. Как найти элемент example, кроме как через рекурсивную функцию?То есть найти его, где бы в xml он не находился.
...
<example name="example text"/>
...
В XML куча вложений и элементов. Как найти элемент example, кроме как через рекурсивную функцию?...
findNode(name,mainNode.firstChild());
qDebug()<<findedNode.toElement().tagName(); // findedNode - глобальная переменная QDomNode findedNode;
...
void GuiInfo::findNode(const QString &name, const QDomNode &node)
{
if (node.hasChildNodes()) {
QDomNodeList tempNodeList = node.childNodes();
for (int i = 0; i<tempNodeList.count(); ++i) {
if (tempNodeList.at(i).toElement().tagName().contains(name))
findedNode = tempNodeList.at(i); // когда я получу значение, нужно убить циклы все, как?
else if (tempNodeList.at(i).hasChildNodes())
findNode(name,tempNodeList.at(i));
}
}
}
const QDomNode node GuiInfo::findNode(const QString &name, const QDomNode &node)
{
if (node.hasChildNodes())
{
QDomNodeList tempNodeList = node.childNodes();
for (int i = 0; i<tempNodeList.count(); ++i)
{
if (tempNodeList.at(i).toElement().tagName().contains(name))
{
findedNode = tempNodeList.at(i); // когда я получу значение, нужно убить циклы все, как?
return findedNode;
}
else if (tempNodeList.at(i).hasChildNodes())
{
findNode(name,tempNodeList.at(i));
}
}
}
return QDomNode();
}
const QDomNode node GuiInfo::findNode
А можно этот момент объяснить?const QDomNode GuiInfo::findNode
Это я бы еще понял, но что там делает node?return QDomNode();
не пойму что возвращаем?
//рекурсивный поиск
bool GuiInfo::findNode(const QString &name, const QDomNode &node, const QDomNode& found)
{
if(node.nodeName()==name)
{
found = node;
return true;
}
if(node.hasChildNodes())
{
QDomNodeList tempNodeList = node.childNodes();
for(int i = 0; i<tempNodeList.count(); i++)
{
if(findNode(name,tempNodeList.item(i),found))return true;
}
}
return false;
}
//ищем
GuiInfo::F1()
{
node=...;
QDomNode found;
if(findNode("aaaa", node, found))
{
//нашли - found
}
}
//ищем
GuiInfo::F1()
{
QDomNode node;
if (findNode("name",mainNode,node))
qDebug()<<"find!";
}
bool GuiInfo::findNode(const QString &name, const QDomNode &node, QDomNode &fnode)
{
if (node.hasChildNodes()) {
QDomNodeList tempNodeList = node.childNodes();
for (int i = 0; i<tempNodeList.count(); ++i) {
if (tempNodeList.at(i).toElement().tagName().contains(name)) {
fnode = tempNodeList.at(i);
return true;
}
else if (tempNodeList.at(i).hasChildNodes()) {
if(findNode(name,tempNodeList.item(i),fnode))
return true;
}
}
}
return false;
}