mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-03 07:45:30 +08:00
qt 6.5.1 original
This commit is contained in:
24
tests/manual/xmlstreamlint/CMakeLists.txt
Normal file
24
tests/manual/xmlstreamlint/CMakeLists.txt
Normal file
@ -0,0 +1,24 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
if (NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(xmlstreamlint LANGUAGES CXX)
|
||||
find_package(Qt6BuildInternals COMPONENTS STANDALONE_TEST)
|
||||
endif()
|
||||
|
||||
qt_internal_add_manual_test(xmlstreamlint
|
||||
SOURCES
|
||||
main.cpp
|
||||
)
|
||||
|
||||
set_target_properties(xmlstreamlint PROPERTIES
|
||||
WIN32_EXECUTABLE FALSE
|
||||
MACOSX_BUNDLE FALSE
|
||||
)
|
||||
|
||||
target_link_libraries(xmlstreamlint PRIVATE
|
||||
Qt::Core
|
||||
Qt::Xml
|
||||
)
|
||||
|
51
tests/manual/xmlstreamlint/doc/src/xmlstreamlint.qdoc
Normal file
51
tests/manual/xmlstreamlint/doc/src/xmlstreamlint.qdoc
Normal file
@ -0,0 +1,51 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
/*!
|
||||
\example xmlstreamlint
|
||||
\title XML Stream Lint Example
|
||||
\ingroup xml-examples
|
||||
\brief A commandline tool reading from an input file and writing to
|
||||
the standard output file.
|
||||
|
||||
The XML Stream Lint example provides a simple command line utility that
|
||||
accepts a file name as its single argument and writes it to the standard
|
||||
output file.
|
||||
|
||||
The specified file is parsed using an QXmlStreamReader object and written
|
||||
to the standard output file using an QXmlStreamWriter object. If the file
|
||||
does not contain a well-formed XML document or the use of namespaces in
|
||||
the document is incorrect, a description of the error is printed to
|
||||
the standard error file and will appear in the console.
|
||||
|
||||
\section1 Basic Operation
|
||||
|
||||
The main function of the example opens the file specified by the user
|
||||
for input (\c inputFile), and it uses QFile to access the standard output
|
||||
file.
|
||||
|
||||
Reading XML is handled by an instance of the QXmlStreamReader class, which
|
||||
operates on the input file object; writing is handled by an instance of
|
||||
QXmlStreamWriter operating on the output file object:
|
||||
|
||||
\snippet xmlstreamlint/main.cpp 0
|
||||
|
||||
The work of parsing and rewriting the XML is done in a while loop, and is
|
||||
driven by input from the reader:
|
||||
|
||||
\snippet xmlstreamlint/main.cpp 1
|
||||
|
||||
If more input is available, the next token from the input file is read
|
||||
and parsed. If an error occurred, information is written to the standard
|
||||
error file via a stream, and the example exits by returning a non-zero
|
||||
value from the main function.
|
||||
|
||||
\snippet xmlstreamlint/main.cpp 2
|
||||
|
||||
For valid input, the writer is fed the current token from the reader,
|
||||
and this is written to the output file that was specified when it was
|
||||
constructed.
|
||||
|
||||
When there is no more input, the loop terminates, and the example can
|
||||
exit successfully.
|
||||
*/
|
90
tests/manual/xmlstreamlint/main.cpp
Normal file
90
tests/manual/xmlstreamlint/main.cpp
Normal file
@ -0,0 +1,90 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QFile>
|
||||
#include <QStringList>
|
||||
#include <QTextStream>
|
||||
#include <QXmlStreamReader>
|
||||
|
||||
/*
|
||||
This class exists for the sole purpose of creating a translation context.
|
||||
*/
|
||||
class XmlStreamLint
|
||||
{
|
||||
public:
|
||||
Q_DECLARE_TR_FUNCTIONS(XmlStreamLint)
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
enum ExitCode
|
||||
{
|
||||
Success,
|
||||
ParseFailure,
|
||||
ArgumentError,
|
||||
WriteError,
|
||||
FileFailure
|
||||
};
|
||||
|
||||
QCoreApplication app(argc, argv);
|
||||
|
||||
QTextStream errorStream(stderr);
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
errorStream << XmlStreamLint::tr(
|
||||
"Usage: xmlstreamlint <path to XML file>\n");
|
||||
return ArgumentError;
|
||||
}
|
||||
|
||||
QString inputFilePath(QCoreApplication::arguments().at(1));
|
||||
QFile inputFile(inputFilePath);
|
||||
|
||||
if (!QFile::exists(inputFilePath))
|
||||
{
|
||||
errorStream << XmlStreamLint::tr(
|
||||
"File %1 does not exist.\n").arg(inputFilePath);
|
||||
return FileFailure;
|
||||
|
||||
} else if (!inputFile.open(QIODevice::ReadOnly)) {
|
||||
errorStream << XmlStreamLint::tr(
|
||||
"Failed to open file %1.\n").arg(inputFilePath);
|
||||
return FileFailure;
|
||||
}
|
||||
|
||||
QFile outputFile;
|
||||
if (!outputFile.open(stdout, QIODevice::WriteOnly))
|
||||
{
|
||||
errorStream << XmlStreamLint::tr("Failed to open stdout.");
|
||||
return WriteError;
|
||||
}
|
||||
|
||||
//! [0]
|
||||
QXmlStreamReader reader(&inputFile);
|
||||
QXmlStreamWriter writer(&outputFile);
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
while (!reader.atEnd())
|
||||
{
|
||||
reader.readNext();
|
||||
|
||||
if (reader.error())
|
||||
{
|
||||
errorStream << XmlStreamLint::tr(
|
||||
"Error: %1 in file %2 at line %3, column %4.\n").arg(
|
||||
reader.errorString(), inputFilePath,
|
||||
QString::number(reader.lineNumber()),
|
||||
QString::number(reader.columnNumber()));
|
||||
return ParseFailure;
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
} else
|
||||
writer.writeCurrentToken(reader);
|
||||
}
|
||||
//! [2]
|
||||
|
||||
return Success;
|
||||
}
|
7
tests/manual/xmlstreamlint/xmlstreamlint.pro
Normal file
7
tests/manual/xmlstreamlint/xmlstreamlint.pro
Normal file
@ -0,0 +1,7 @@
|
||||
CONFIG += cmdline
|
||||
QT -= gui
|
||||
SOURCES += main.cpp
|
||||
|
||||
# install
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/xml/xmlstreamlint
|
||||
INSTALLS += target
|
Reference in New Issue
Block a user