diff options
author | David Boddie <david.boddie@nokia.com> | 2011-04-27 16:12:16 (GMT) |
---|---|---|
committer | David Boddie <david.boddie@nokia.com> | 2011-04-28 17:03:22 (GMT) |
commit | 728d4798fa38abf04c682d955abe6325f7599fa0 (patch) | |
tree | 4ce7d2fd6ee5b7d3565a7b10d91c536f5ab65b7f | |
parent | 539311f7b2687e3148ea695ce06fee768abe7b44 (diff) | |
download | Qt-728d4798fa38abf04c682d955abe6325f7599fa0.zip Qt-728d4798fa38abf04c682d955abe6325f7599fa0.tar.gz Qt-728d4798fa38abf04c682d955abe6325f7599fa0.tar.bz2 |
Doc: Added a code snippet to clarify the use of a function.
Task-number: QTBUG-18888
-rw-r--r-- | doc/src/snippets/xml/streamreader/traverse.cpp | 78 | ||||
-rw-r--r-- | doc/src/snippets/xml/streamreader/traverse.pro | 2 | ||||
-rw-r--r-- | src/corelib/xml/qxmlstream.cpp | 5 |
3 files changed, 85 insertions, 0 deletions
diff --git a/doc/src/snippets/xml/streamreader/traverse.cpp b/doc/src/snippets/xml/streamreader/traverse.cpp new file mode 100644 index 0000000..25b64eb --- /dev/null +++ b/doc/src/snippets/xml/streamreader/traverse.cpp @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QCoreApplication> +#include <QFile> +#include <QStringList> +#include <QXmlStreamReader> + +#include <iostream> + +class Traverse +{ + Q_DECLARE_TR_FUNCTIONS(Traverse) +}; + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + + if (app.arguments().count() != 2) { + std::cerr << qPrintable(Traverse::tr("Usage: traverse <XML file>")) << std::endl; + return 1; + } + + QFile file(app.arguments()[1]); + if (!file.open(QFile::ReadOnly)) { + std::cerr << qPrintable(Traverse::tr("Failed to open file: %1").arg(app.arguments()[1])) << std::endl; + return 1; + } + + //! [traverse document] + QXmlStreamReader xs(&file); + while (!xs.atEnd()) { + if (xs.readNextStartElement()) + std::cout << qPrintable(xs.name().toString()) << std::endl; + } + //! [traverse document] + + file.close(); + return 0; +} diff --git a/doc/src/snippets/xml/streamreader/traverse.pro b/doc/src/snippets/xml/streamreader/traverse.pro new file mode 100644 index 0000000..e98e6f3 --- /dev/null +++ b/doc/src/snippets/xml/streamreader/traverse.pro @@ -0,0 +1,2 @@ +QT -= gui +SOURCES = traverse.cpp diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp index 2ef0386..e19a498 100644 --- a/src/corelib/xml/qxmlstream.cpp +++ b/src/corelib/xml/qxmlstream.cpp @@ -646,6 +646,11 @@ QXmlStreamReader::TokenType QXmlStreamReader::tokenType() const parser has reached the end element, the current element becomes the parent element. + You can traverse a document by repeatedly calling this function while + ensuring that the stream reader is not at the end of the document: + + \snippet doc/src/snippets/xml/streamreader/traverse.cpp traverse document + This is a convenience function for when you're only concerned with parsing XML elements. The \l{QXmlStream Bookmarks Example} makes extensive use of this function. |