blob: 5c68aaa81e19a5f6a2bd3778a4b2f75913b480f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*
Copyright 2009 Last.fm Ltd.
- Primarily authored by Max Howell, Jono Cole and Doug Mansell
This file is part of liblastfm.
liblastfm is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
liblastfm is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with liblastfm. If not, see <http://www.gnu.org/licenses/>.
*/
#include "XmlQuery.h"
#include <QStringList>
using lastfm::XmlQuery;
XmlQuery::XmlQuery( const QByteArray& bytes )
{
domdoc.setContent(bytes);
e = domdoc.documentElement();
}
XmlQuery
XmlQuery::operator[]( const QString& name ) const
{
QStringList parts = name.split( ' ' );
if (parts.size() >= 2)
{
QString tagName = parts[0];
parts = parts[1].split( '=' );
QString attributeName = parts.value( 0 );
QString attributeValue = parts.value( 1 );
foreach (XmlQuery e, children( tagName ))
if (e.e.attribute( attributeName ) == attributeValue)
return e;
}
XmlQuery xq( e.firstChildElement( name ), name.toUtf8().data() );
xq.domdoc = this->domdoc;
return xq;
}
QList<XmlQuery>
XmlQuery::children( const QString& named ) const
{
QList<XmlQuery> elements;
QDomNodeList nodes = e.elementsByTagName( named );
for (int x = 0; x < nodes.count(); ++x) {
XmlQuery xq( nodes.at( x ).toElement() );
xq.domdoc = this->domdoc;
elements += xq;
}
return elements;
}
|