QDomNode

「QDomNode」の編集履歴(バックアップ)一覧に戻る
QDomNode」を以下のとおり復元します。
*注意
**cloneNode()以外はシャローコピーです
返り値であるオブジェクトを変更すると、DOMツリー上のオブジェクトも変更されます。

**nullノードとは
isNull()の値がtrueである空のノードです
----
*基本
**コンストラクタ
 QDomNode::QDomNode()
nullノードを作成します

**コピーコンストラクタ
 QDomNode::QDomNode(const QDomNode & n)
オブジェクトはシャローコピーされます
ディープコピーをする場合はcloneNode()を使用します

**デストラクタ
 QDomNode::~QDomNode()

*ノードに関する情報を取得する
**型を取得する
 NodeType QDomNode::nodeType() const
本ノードの型を取得します

|enum QDomNode::NodeType|値|内容|
|QDomNode::ElementNode|1|要素のノード|
|QDomNode::AttributeNode|2|属性のノード|
|QDomNode::TextNode|3|テキストノード|
|QDomNode::CDATASectionNode|4|CDATAノード|
|QDomNode::EntityReferenceNode|5|実体参照ノード|
|QDomNode::EntityNode|6|実体ノード|
|QDomNode::ProcessingInstructionNode|7|処理命令ノード|
|QDomNode::CommentNode|8|コメントノード|
|QDomNode::DocumentNode|9|ドキュメントノード|
|QDomNode::DocumentTypeNode|10|ドキュメントタイプノード|
|QDomNode::DocumentFragmentNode|11|ドキュメントフラグメントノード|
|QDomNode::NotationNode|12|ノーティションノード|
|QDomNode::BaseNode|21|QDomNodeオブジェクト|
|QDomNode::CharacterDataNode|22|文字データノード|

**名前を取得する
→[[例 ノード名を取得する]]

 QString QDomNode::namespaceURI() const
本ノードの名前空間URIを取得します
名前空間URIを持たない場合は空の文字列を返します

 QString QDomNode::prefix() const
本ノードの名前空間接頭辞を取得します
名前空間接頭辞を持たない場合は空の文字列を返します

-名前空間URI及び接頭辞はノード生成時に指定されなければならず、後から指定しますことはできません
-[[QDomElement]] オブジェクトまたは [[QDomAttribute]] オブジェクトのみ名前空間URI及び接頭辞を持つことができます
-QDomDocument::createElement() を使用して作成した要素または QDomDocument::createAttribute() を使用して作成した属性は名前空間URI及び接頭辞には空の文字列が設定されます
-QDomDocument::createElementNS() を使用して作成した要素または QDomDocument::createAttributeNS() を使用して作成した属性は名前空間URI及び接頭辞が設定されます

 QString QDomNode::localName() const
本ノードが名前空間を利用している場合、ローカル名を取得します
名前空間を利用していない場合は空の文字列を返します

 QString QDomNode::nodeName() const
本ノードの名前を取得します
名前の意味はノードのオブジェクトによって異なります
名前空間は考慮されていないので正確な名前を得る場合は namespaceURI() 及び localName() を使用します

|enum QDomNode::NodeType|返り値|
|QDomAttr|属性名|
|QDomCDATASection|"#cdata-section"|
|QDomComment|"#comment"|
|QDomDocument|"#document"|
|QDomDocumentFragment|"#document*fragment"|
|QDomDocumentType|文章型名|
|QDomElement|タグ名|
|QDomEntity|実体名|
|QDomEntityReference|参照された実体名|
|QDomNotation|記法名|
|QDomProcessingInstruction|処理命令のターゲット|
|QDomText|"#text"|

 void QDomNode::setPrefix(const QString & pre)
本ノードが名前空間接頭辞を持っている場合、名前空間接頭辞を変更できます
持っていない場合は何もしません
[[QDomElement]] オブジェクト または [[QDomAttribute]] オブジェクトのみ名前空間を持つことができます
名前空間はノード生成時に指定されなければならず、後から名前空間を指定することはできません
----
*関係するノードを取得する
**ルートノードを取得する
 QDomDocument QDomNode::ownerDocument() const
本ノードのルートノードを取得します

**親ノードを取得する
 QDomNode QDomNode::parentNode() const
本ノードの親ノードを取得します
親ノードが存在しない場合、nullノードを返します

**兄弟ノードを取得する
 QDomNode QDomNode::nextSibling() const
次の兄弟ノードを取得します
次の兄弟ノードが存在しない場合はnullノードを返します

 QDomNode QDomNode::previousSibling() const
前の兄弟ノードを取得します
前の兄弟ノードが存在しない場合はnullノードを返します

**子ノード
***子ノードを取得する
 bool QDomNode::hasChildNodes() const
子ノードが存在する場合はtrue、そうでない場合はfalseを返します

 QDomNodeList QDomNode::childNodes() const
本ノードの直接の子ノードのリストを取得します
子ノードが存在しない場合は空の [[QDomNodeList]] を返します

 QDomNode QDomNode::firstChild() const
本ノードの最初の子ノードを取得します
子ノードが存在しない場合はnullノードを返します

 QDomNode QDomNode::lastChild() const
本ノードの最後の子ノードを取得します
子ノードがない場合はnullノードを返します

 QDomNode QDomNode::namedItem(const QString & name) const
nodeName() の値が name と等しい最初に見つかった子ノードを取得します
該当するノードが存在しない場合はnullノードを返します
ノード名とは nodeName() で得られる値です

***子ノードを削除する
 QDomNode QDomNode::removeChild(const QDomNode & oldChild)

-成功した場合は oldChild の参照を返し、失敗した場合はnullノードを返します
-oldChild で指定した子ノードを本ノードから削除します
-oldChild は本ノードの直接の子ノードである必要があります

***子ノードを置換する
 QDomNode QDomNode::replaceChild(const QDomNode & newChild, const QDomNode & oldChild)
oldChild を newChild で置換します

-成功した場合は oldChild の参照を返し、失敗した場合はnullノードを返します
-oldChild は本ノードの直接の子ノードである必要があります
-newChild が既に他のノードの子ノードである場合、本ノードの子ノードに変更されます
-newChild が既に本ノードの子ノードである場合、位置が変更されます
-newChild が QDomDocumentFragment オブジェクトの場合、oldChild はフラグメントにある子ノードに置換されます

***子ノードを追加する
 QDomNode QDomNode::appendChild(const QDomNode & newChild)
本ノードの子ノードの最後に新しい子ノードを追加します

-成功した場合は newChild の参照を返し、失敗した場合はnullノードを返します
-nullノードでこの関数を呼んだ場合、なにもせず、nullノードを返します
-newChild が既に他のノードの子ノードである場合、本ノードの子ノードに変更されます
-newChild が既に本ノードの子ノードである場合、位置が変更されます
-newChild が QDomDocumentFragment オブジェクトの場合、フラグメントにある子ノードはすべて削除され、その子ノードは本ノードの子ノードの最後にまとめて追加されます
-newChild が QDomElement オブジェクトであり、本ノードが既に要素ノードを子ノードに持った QDomDocument オブジェクトである場合、newChild は追加されず、nullノードを返します
-DOMの仕様では属性ノードを挿入することは許可されていませんが、歴史的な理由から QDom では許可されています

 QDomNode QDomNode::insertAfter(const QDomNode & newChild, const QDomNode & refChild)
refChild ノードの後に newChild を挿入します

-成功した場合は newChild の参照を返し、失敗した場合はnullノードを返します
-refChild は本ノードの直接の子ノードである必要があります
-refChild にnullを指定した場合 newChild は本ノードの子ノードの最後に追加されます
-newChild が既に他のノードの子ノードである場合、本ノードの子ノードに変更されます
-newChild が既に本ノードの子ノードである場合、位置が変更されます
-newChild が QDomDocumentFragment オブジェクトの場合、フラグメントにある子ノードはすべて削除され、その子ノードは refChild の後にまとめて追加されます
-DOMの仕様では属性ノードを挿入することは許可されていませんが、歴史的な理由から QDom では許可されています

 QDomNode QDomNode::insertBefore(const QDomNode & newChild, const QDomNode & refChild)
refChild ノードの前に newChild を挿入します

-成功した場合は newChild の参照を返し、失敗した場合はnullノードを返します
-refChild は本ノードの直接の子ノードである必要があります
-refChild にnullを指定した場合 newChild は本ノードの子ノードの最初に追加されます
-newChild が既に他のノードの子ノードである場合、本ノードの子ノードに変更されます
-newChild が既に本ノードの子ノードである場合、位置が変更されます
-newChild が QDomDocumentFragment オブジェクトの場合、フラグメントにある子ノードはすべて削除され、その子ノードは refChild の前にまとめて追加されます

DOMの仕様では属性ノードを挿入しますことは許可されていませんが、歴史的な理由から QDom では許可されています

**子要素
***子要素を取得する
 QDomElement QDomNode::firstChildElement(const QString & tagName = QString()) const
指定したタグ名 tagName を持つ最初に見つかった子要素を取得します
タグ名を指定しなかった場合は最初の子要素を返します
該当する子要素がない場合はnullノードを返します

 QDomElement QDomNode::lastChildElement(const QString & tagName = QString()) const
指定したタグ名 tagName を持つ最後に見つかった子要素を取得します
タグ名を指定しなかった場合は最後の子要素を返します
該当する子要素がない場合はnullノードを返します

 QDomElement QDomNode::previousSiblingElement(const QString & tagName = QString()) const
指定したタグ名 tagName を持つ前の兄弟ノードを取得します
タグ名を指定しなかった場合は前の兄弟ノードを取得します
該当する子要素がない場合はnullノードを返します

 QDomElement QDomNode::nextSiblingElement(const QString & tagName = QString()) const
指定したタグ名 tagName を持つ次の兄弟ノードを取得します
タグ名を指定しなかった場合は次の兄弟ノードを取得します
該当する子要素がない場合はnullノードを返します
----
**属性
***属性を取得する
 QDomNamedNodeMap QDomNode::attributes() const
すべての属性の名前付きノードマップを取得します
属性は QDomElements オブジェクトでのみ提供されます

***属性があるかチェックする
 bool QDomNode::hasAttributes() const
本ノードが属性を持っている場合はtrue、そうでない場合はfalseを返します

**値
***値を取得する
 QString QDomNode::nodeValue() const
本ノードの値を取得します
値の意味はノードのオブジェクトによって異なります
以下以外の子クラスでは空の文字列を返します
|QDomAttr|属性値|
|QDomCDATASection|CDATAセクションのコンテンツ|
|QDomComment|コメント|
|QDomProcessingInstruction|命令処理のデータ|
|QDomText|テキスト|

***値を設定する
 void QDomNode::setNodeValue(const QString & v)
本ノードに値を設定します

*メソッド
**クリアする
 void QDomNode::clear()
本ノードをnullノードにします
本ノードが所持しているコンテンツや型などは削除されます

**コピーする
 QDomNode QDomNode::cloneNode(bool deep = true) const
QDomNodeのディープコピーを作成します
deep=trueの場合、子ノード以下もすべてコピーされます
deep=falseの場合、本ノードのみコピーされます

**オブジェクトのタイプを判定する
 bool QDomNode::isNull() const
本ノードがnullノードである場合はtrue、そうでない場合はfalseを返します

 bool QDomNode::isAttr() const
本ノードが属性である場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomAttribute オブジェクトであることを示すものではありません

 bool QDomNode::isCDATASection() const
本ノードがCDATAセクションである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomCDATASection オブジェクトを示すものではありません

 bool QDomNode::isCharacterData() const
本ノードが文字データノードである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomCharacterData オブジェクトを示すものではありません

 bool QDomNode::isComment() const
本ノードがコメントである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomComment オブジェクトを示すものではありません

 bool QDomNode::isDocument() const
本ノードがドキュメントである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomDocument オブジェクトを示すものではありません

 bool QDomNode::isDocumentFragment() const
本ノードがドキュメントフラグメントである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomDocumentFragment オブジェクトを示すものではありません

 bool QDomNode::isDocumentType() const
本ノードが文章型である場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomDocumentType オブジェクトを示すものではありません

 bool QDomNode::isElement() const
本ノードが要素である場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomElement オブジェクトを示すものではありません

 bool QDomNode::isEntity() const
本ノードが実体である場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomEntity オブジェクトを示すものではありません

 bool QDomNode::isEntityReference() const
本ノードが実体参照である場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomEntityReference オブジェクトを示すものではありません

 bool QDomNode::isNotation() const
本ノードがNOTATIONである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomNotation オブジェクトを示すものではありません

 bool QDomNode::isProcessingInstruction() const
本ノードが処理命令である場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードが QDomProcessingInstruction オブジェクトを示すものではありません

 bool QDomNode::isText() const
本ノードがテキストである場合はtrue、そうでない場合はfalseを返します
trueを返した場合でも本ノードがQDomTextオブジェクトを示すものではありません

**変換する
 QDomCDATASection QDomNode::toCDATASection() const
QDomNode を子クラスである QDomCDATASection に変換します
本ノードが属性でない場合、nullノードを返します

 QDomCharacterData QDomNode::toCharacterData() const
QDomNode を子クラスである QDomCharacterData に変換します
本ノードが属性でない場合、nullノードを返します

 QDomComment QDomNode::toComment() const
QDomNode を子クラスである QDomComment に変換します
本ノードが属性でない場合、nullノードを返します

 QDomDocument QDomNode::toDocument() const
QDomNode を子クラスである QDomDocument に変換します
本ノードが属性でない場合、nullノードを返します

 QDomDocumentFragment QDomNode::toDocumentFragment() const
QDomNode を子クラスである QDomDocumentFragment に変換します
本ノードが属性でない場合、nullノードを返します

 QDomDocumentType QDomNode::toDocumentType() const
QDomNode を子クラスである QDomDocumentType に変換します
本ノードが属性でない場合、nullノードを返します

 QDomElement QDomNode::toElement() const
QDomNode を子クラスである QDomElement に変換します
本ノードが属性でない場合、nullノードを返します

 QDomEntity QDomNode::toEntity() const
QDomNode を子クラスである QDomEntity に変換します
本ノードが属性でない場合、nullノードを返します

 QDomEntityReference QDomNode::toEntityReference() const
QDomNode を子クラスである QDomEntityReference に変換します
本ノードが属性でない場合、nullノードを返します

 QDomNotation QDomNode::toNotation() const
QDomNode を子クラスである QDomNotation に変換します
本ノードが属性でない場合、nullノードを返します

 QDomProcessingInstruction QDomNode::toProcessingInstruction() const
QDomNode を子クラスである QDomProcessingInstruction に変換します
本ノードが属性でない場合、nullノードを返します

 QDomText QDomNode::toText() const
QDomNode を子クラスである QDomText に変換します
本ノードが属性でない場合、nullノードを返します

 QDomAttr QDomNode::toAttr() const
QDomNode を子クラスである QDomAttr に変換します
本ノードが属性でない場合、nullノードを返します

**その他
 bool QDomNode::isSupported(const QString & feature, const QString & version) const
機能 feature がXMLDOMレベル version でサポートされている場合はtrue、そうでない場合はfalseを返します

 int QDomNode::columnNumber() const
QDomDocument::setContent()で自動生成されたノードの場合、対応したXML文章上の列番号を返します
それ以外の手段で生成されたノードの場合は-1を返します

 int QDomNode::lineNumber() const
QDomDocument::setContent()で自動生成されたノードの場合、対応したXML文章上の行番号を返します
それ以外の手段で生成されたノードの場合は-1を返します

**演算子
 bool QDomNode::operator!=(const QDomNode & n) const

 bool QDomNode::operator==(const QDomNode & n) const

 QDomNode & QDomNode::operator=(const QDomNode & n)

----

以下未整理

 void QDomNode::normalize()
要素ノードで呼ばれた場合、すべての子を標準形に変換します
つまり、隣接したQDomTextオブジェクトは一つに統合されます

 void QDomNode::save(QTextStream & stream, int indent, EncodingPolicy encodingPolicy = QDomNode::EncodingFromDocument) const
ノード及びすべての子ノードをXMLで表現しなおしたものをstreamで指定したストリームに書き込みます
indentではノードのインデントに使用します空白の量を指定します
文章に無効なXML文字及び与えられた文字コードでエンコードできない文字が含まれる場合の挙動は定義されていません

 encodingPolicy がQDomNode::EncodingFromDocumentであり、本ノードがドキュメントノードである場合、
テキストストリームの文字コードはXML宣言の名前xmlによって処理命令を扱うことによって設定されます
指定されていない場合はUTF8をデフォルトを指定します
しかしこの挙動は歴史的な理由です
本ノードがドキュメントノードでない場合、テキストストリームの文字コードを使用します
encodingPolicy が EncodingFromTextStreamであり、本ノードがドキュメントノードである場合、
この関数の挙動はテキストストリームstreamで指定された文字コードを使用しますこと以外は、save(QTextStream &str, int indent)と同じに振るまいます
文章に無効なXML文字及び与えられた文字コードでエンコードできない文字が含まれる場合の挙動は定義されていません

 enum QDomNode::EncodingPolicy
 QDomNode::save()で文章を保存します際のエンコーディング形式
 QDomNode::EncodingFromDocument	1	文章のエンコーディング形式を使用
 QDomNode::EncodingFromTextStream	2	QTextStreamて指定したエンコーディング形式を使用

復元してよろしいですか?