QXmlInputSource Class
QXmlInputSource クラスは、QXmlReader のサブクラスに対して入力データを提供します。詳細...
| ヘッダー: | #include <QXmlInputSource> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
注:このクラスのすべての関数は再入可能である。
パブリック関数
| QXmlInputSource() | |
| QXmlInputSource(QIODevice *dev) | |
| virtual | ~QXmlInputSource() |
| virtual QString | data() const |
| virtual void | fetchData() |
| virtual QChar | next() |
| virtual void | reset() |
| virtual void | setData(const QString &dat) |
| virtual void | setData(const QByteArray &dat) |
プロテクトされた関数
| virtual QString | fromRawData(const QByteArray &data, bool beginning = false) |
詳細な説明
QXmlReader のすべてのサブクラスは、このクラスから入力 XML ドキュメントを読み取ります。
このクラスは、XML ファイル内のエンコーディング宣言が見つかった場合はそれを読み取り、対応するエンコーディングを使用してデータを読み込むことで、データのエンコーディングを認識します。エンコーディング宣言が見つからない場合は、バイト順マークが見つかるかどうかによって、データが UTF-8 または UTF-16 のいずれかであると見なします。
入力ソースにデータを設定するには 2 つの方法があります。1 つは、QIODevice* を引数として入力ソースを構築し、そのデバイスからデータを読み込ませる方法です。もう 1 つは、setData() 関数のいずれかを使用して、データを明示的に設定する方法です。
通常は、QIODevice* を扱う QXmlInputSource を生成するか、空の QXmlInputSource を生成してsetData() 関数でデータを設定します。これら両方の方法を併用する必要があるのは、ごく稀な場合に限られます。
QXmlReader のサブクラスは、next()関数を使用して、入力データを1文字ずつ読み込みます。最初から読み直しを行う場合は、reset()を使用してください。
data() およびfetchData() 関数は、パース以外の処理(例えば、生の XML ファイルの表示など)を行いたい場合に便利です。このような場合に QXmlInputClass を使用する利点は、正しいエンコーディングを使用しようと試みる点にあります。
「 QXmlReader 」および「QXmlSimpleReader 」も参照してください 。
メンバ関数のドキュメント
QXmlInputSource::QXmlInputSource()
データが含まれていない入力ソースを作成します。
setData()も参照してください 。
[explicit] QXmlInputSource::QXmlInputSource(QIODevice *dev)
入力ソースを構築し、デバイスdev からデータを取得します。dev が開かれていない場合は、読み取り専用モードで開かれます。dev が 0 であるか、デバイスから読み取ることができない場合、入力ソースにはデータが含まれません。
setData()、fetchData()、およびQIODeviceも参照してください 。
[virtual noexcept] QXmlInputSource::~QXmlInputSource()
デストラクタ。
[virtual] QString QXmlInputSource::data() const
入力ソースに含まれるデータを返します。入力ソースにデータが含まれていない場合は、空の文字列を返します。
setData()、QXmlInputSource()、およびfetchData()も参照してください 。
[virtual] void QXmlInputSource::fetchData()
この関数は、インスタンス生成時に設定されたデバイスから、さらにデータを読み込みます。入力ソースにすでにデータが含まれている場合、この関数はまずそのデータを削除します。
データを読み取る対象となるデバイスを指定せずにオブジェクトが構築された場合、またはこの関数がデバイスから追加のデータを取得できなかった場合、この関数の呼び出し後、このオブジェクトにはデータが含まれなくなります。
フェッチが別の関数呼び出しによって暗黙的に行われるのは、2つの場合です。1つは構築時(利用可能な場合は、オブジェクトが初期データを持って開始されるようにするため)、もう1つはnext()の呼び出し時(データが尽きた場合)です。
next() を使用する場合、通常はこの関数を使用する必要はありません。
data()、next()、およびQXmlInputSource()も参照してください 。
[virtual protected] QString QXmlInputSource::fromRawData(const QByteArray &data, bool beginning = false)
この関数は、data から XML ファイルを読み込み、エンコーディングの判別を試みます。生データdata をQString に変換し、それを返します。XML ファイルの正しいエンコーディングを判別できるよう最善を尽くします。
beginning が true の場合、この関数はデータが新しい XML ドキュメントの先頭から始まっているものと見なし、エンコーディング宣言を検索します。beginning が false の場合、以前の呼び出しから決定されたエンコーディングを使用して生データを変換します。
[virtual] QChar QXmlInputSource::next()
入力ソースの次の文字を返します。この関数が利用可能なデータの末尾に達した場合、QXmlInputSource::EndOfData を返します。その後で next() を呼び出すと、fetchData() を呼び出して、さらなるデータの取得を試みます。fetchData()の呼び出しによって新しいデータが取得された場合、この関数はそのデータの最初の文字を返します。そうでない場合は、QXmlInputSource::EndOfDocumentを返します。
QXmlSimpleReader などのリーダーは、この関数がQXmlInputSource::EndOfDocumentを返した場合、XMLドキュメントの末尾に到達したとみなして、渡された入力がウェルフォームであるかどうかを確認します。したがって、この関数を再実装する際は、この挙動を確実に再現することが重要です。
reset()、fetchData()、QXmlSimpleReader::parse()、およびQXmlSimpleReader::parseContinue()も参照してください 。
[virtual] void QXmlInputSource::reset()
この関数は、next() で使用される位置を、data() が返すデータの先頭に設定します。これは、1つの入力ソースを複数の解析に使用したい場合に便利です。
注: 基になるデータソースがQIODevice である場合 、デバイス内の現在の位置は自動的に入力の先頭に設定されません。これを行うには、デバイス上でQIODevice::seek(0)を呼び出してください。
関連項目: next()。
[virtual] void QXmlInputSource::setData(const QString &dat)
入力ソースのデータをdat に設定します。
入力ソースにすでにデータが含まれている場合、この関数はまずそのデータを削除します。
data()も参照してください 。
[virtual] void QXmlInputSource::setData(const QByteArray &dat)
データ `dat ` は、設定される前に、適切なテキストコーデックを通じて処理されます。
これはオーバーロードされた関数です。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.