/usr/include/lastfm/XmlQuery is in liblastfm-dev 0.4.0~really0.3.3-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 65 66 67 68 69 70 71 72 73 74 75 76 | /*
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/>.
*/
#ifndef LASTFM_XMLQUERY_H
#define LASTFM_XMLQUERY_H
#include <lastfm/global.h>
#include <QDomDocument>
#include <QDomElement>
namespace lastfm
{
/** Qt's XmlQuery implementation is totally unimpressive, so this is a
* hack that feels like jQuery */
class LASTFM_DLLEXPORT XmlQuery
{
QDomDocument domdoc;
QDomElement e;
public:
/** we assume the bytearray is an XML document, this object will then
* represent the documentElement of that document, eg. if this is a
* Last.fm webservice response:
*
* XmlQuery xq = lastfm::ws::parse(response);
* qDebug() << xq["artist"].text()
*
* Notice the lfm node is not referenced, that is because it is the
* document-element of the XML document.
*/
XmlQuery( const QByteArray& );
XmlQuery( const QDomElement& e, const char* name = "" ) : e( e )
{
if (e.isNull()) qWarning() << "Expected node absent:" << name;
}
/** Selects a DIRECT child element, you can specify attributes like so:
*
* e["element"]["element attribute=value"].text();
*/
XmlQuery operator[]( const QString& name ) const;
QString text() const { return e.text(); }
/** selects all children with specified name, recursively */
QList<XmlQuery> children( const QString& named ) const;
operator QDomElement() const { return e; }
};
}
inline QDebug operator<<( QDebug d, const lastfm::XmlQuery& xq )
{
QString s;
QTextStream t( &s, QIODevice::WriteOnly );
QDomElement(xq).save( t, 2 );
return d << s;
}
#endif
|