![]() ![]() ![]() ![]() |
SophiaFramework UNIVERSE 5.3 |
#include <SFXXMLDocument.hpp>
class SFXXMLDocument : public SFXXMLNode;
SFMTYPEDEFCLASS(SFXXMLDocument)
Document ノード(SFXXMLDocument)は、 DOM ツリーで最上位に位置するルートノードです。 このノードは XML 文書を保持します。
Element / Attribute / Text / Comment / ProcessingInstruction などのノードは、 Document ノードのコンテキスト外では存在し得ません。
このため、 SFXXMLDocument クラスでは、 以下の表にあるように DOM ツリーを構成する各種ノード(SFXXMLNode を継承する各クラス) を作成するために必要な関数が用意されます。 各種ノードは、ノードを作成した Document ノードを関連付ける ownerDocument 属性を持っています。
関数名 | 引数 | 戻り値 | 解説 |
---|---|---|---|
SFXXMLDocument::CreateElement | 要素名 | Element ノード(SFXXMLElement) | 要素名を指定して Element ノードを作成する |
SFXXMLDocument::CreateElementNS | 要素名(修飾名)、名前空間 URI | Element ノード(SFXXMLElement) | 要素名(修飾名)と名前空間 URI を指定して Element ノードを作成する |
SFXXMLDocument::CreateAttribute | 属性名 | Attribute ノード(SFXXMLAttribute) | 属性名を指定して Attribute ノードを作成する |
SFXXMLDocument::CreateAttributeNS | 属性名(修飾名)、名前空間 URI | Attribute ノード(SFXXMLAttribute) | 属性名(修飾名)と名前空間 URI を指定して Attribute ノードを作成する |
SFXXMLDocument::CreateTextNode | テキスト | Text ノード(SFXXMLText) | 指定されたテキストを持つ Text ノードを作成する |
SFXXMLDocument::CreateComment | コメントの内容 | Comment ノード(SFXXMLComment) | 指定されたコメントの内容を持つ Comment ノードを作成する |
SFXXMLDocument::CreateCDATASection | CDATASection の内容 | CDATASection ノード(SFXXMLCDATASection) | 指定された CDATASection の内容を持つ CDATASection ノードを作成する |
SFXXMLDocument::CreateEntity | エンティティ名 | Entity ノード(SFXXMLEntity) | 指定されたエンティティ名を持つ Entity ノードを作成する |
SFXXMLDocument::CreateEntityReference | 参照するエンティティ名 | EntityReference ノード(SFXXMLEntityReference) | 指定された参照するエンティティ名を持つ EntityReference ノードを作成する |
SFXXMLDocument::CreateDocumentType | 文書型名、公開識別子、システム識別子 | DocumentType ノード(SFXXMLDocumentType) | 指定された文書型名、公開識別子、システム識別子を持つ DocumentType ノードを作成する |
SFXXMLDocument::CreateNotation | 記法名 | Notation ノード(SFXXMLNotation) | 指定された記法名を持つ Notation ノードを作成する |
SFXXMLDocument::CreateProcessingInstruction | ターゲット名、処理命令の内容 | ProcessingInstruction ノード(SFXXMLProcessingInstruction) | 指定されたターゲット名、処理命令の内容を持つ ProcessingInstruction ノードを作成する |
SFXXMLDocument::CreateDocumentFragment | 無し | DocumentFragment ノード(SFXXMLDocumentFragment) | 空の DocumentFragment ノードを作成する |
SFXXMLNode | SFXXMLAttribute | SFXXMLCDATASection | SFXXMLComment | SFXXMLDocumentFragment | SFXXMLDocumentType | SFXXMLElement | SFXXMLEntity | SFXXMLEntityReference | SFXXMLNotation | SFXXMLProcessingInstruction | SFXXMLText
コンストラクタ/デストラクタ |
---|
SFXXMLDocument( Void ) SFXXMLDocument クラスのコンストラクタです。
|
~SFXXMLDocument( Void ) SFXXMLDocument クラスのデストラクタです。
|
パブリック関数 | |
---|---|
SFCError |
AppendChild(
SFXXMLNodeConstPtr newchild
) 子ノードの最後にノードを追加します。
|
SFCError |
CloneNode(
SFXXMLNodeHandle clonenode
, Bool deep
) ノードのコピーを作成します。
|
SFXXMLAttributePtr |
CreateAttribute(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef value
) 指定された属性名と属性値を持つ Attribute ノードを作成します。
|
SFXXMLAttributePtr |
CreateAttributeNS(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef namespaceURI
) 指定された属性名(修飾名)と名前空間 URI を持つ Attribute ノードを作成します。
|
SFXXMLCDATASectionPtr |
CreateCDATASection(
SFXAnsiStringConstRef data
) 指定された CDATAセクションの内容(文字列)を値(nodeValue 属性値)に持つ CDATASection ノードを作成します。
|
SFXXMLCommentPtr |
CreateComment(
SFXAnsiStringConstRef data
) 指定されたコメントの内容を値(nodeValue 属性値)に持つ Comment ノードを作成します。
|
SFXXMLDocumentFragmentPtr |
CreateDocumentFragment( Void ) 空の DocumentFragment ノードを作成します。
|
SFXXMLDocumentTypePtr |
CreateDocumentType(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef publicId
, SFXAnsiStringConstRef systemId
) 空の DocumentType ノードを作成します。
|
SFXXMLElementPtr |
CreateElement(
SFXAnsiStringConstRef name
) 指定された要素名を持つ Element ノードを作成します。
|
SFXXMLElementPtr |
CreateElementNS(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef namespaceURI
) 指定された要素名(修飾名)と名前空間 URI を持つ Element ノードを作成します。
|
SFXXMLEntityPtr |
CreateEntity(
SFXAnsiStringConstRef name
) 指定されたエンティティ名を持つ Entity ノードを作成します。
|
SFXXMLEntityReferencePtr |
CreateEntityReference(
SFXAnsiStringConstRef name
) 指定された参照するエンティティ名を持つ EntityReference ノードを作成します。
|
SFXXMLNotationPtr |
CreateNotation(
SFXAnsiStringConstRef name
) 指定された記法名を持つ Notation ノードを作成します。
|
SFXXMLProcessingInstructionPtr |
CreateProcessingInstruction(
SFXAnsiStringConstRef target
, SFXAnsiStringConstRef data
) 指定されたターゲット名と処理命令の内容を持つ ProcessingInstruction ノードを作成します。
|
SFXXMLTextPtr |
CreateTextNode(
SFXAnsiStringConstRef data
) 指定されたテキストを値(nodeValue 属性値)に持つ Text ノードを作成します。
|
DOMNodeListPtr |
GetChildNodes( Void ) すべての子ノードを取得します。
|
SFXXMLElementPtr |
GetDocumentElement( Void ) Element ノードを取得します。
|
SFXXMLDocumentTypePtr |
GetDocumentType( Void ) DocumentType ノードを取得します。
|
DOMNodeListPtr |
GetElementsByTagName(
SFXAnsiStringConstRef tag
, SFXXMLNodeConstPtr root = null
) DOM ツリーの指定された検索開始ノード以下で、指定されたタグ名を持つ、すべての Element ノードを取得します。
|
DOMNodeListPtr |
GetElementsByTagNameNS(
SFXAnsiStringConstRef localname
, SFXAnsiStringConstRef namespaceURI
, SFXXMLNodeConstPtr root = null
) DOM ツリーの指定された検索開始ノード以下で、指定されたローカル名と名前空間 URI を持つ、すべての Element ノードを取得します。
|
ACharConstPtr |
GetEncoding( Void ) エンコーディングを取得します。
|
SFXXMLNodePtr |
GetFirstChild( Void ) 最初の子ノードを取得します。
|
SFXXMLNodePtr |
GetLastChild( Void ) 最後の子ノードを取得します。
|
DOMNodeListPtr |
GetListsByTypeFilter(
NodeType type
) 指定されたノードタイプ(nodeType 属性)に一致する、DOM ツリー内のすべてのノードを取得します。
|
ACharConstPtr |
GetNodeName( Void ) ノードの名前(nodeName 属性値)を取得します。
|
NodeType |
GetNodeType( Void ) ノードタイプ(nodeType 属性値)を取得します。
|
Bool |
GetStandalone( Void ) スタンドアロンの指定を取得します。
|
ACharConstPtr |
GetVersion( Void ) バージョン番号を取得します。
|
Bool |
HasChildNodes( Void ) 子ノードを持つかどうか判定します。
|
SFCError |
InsertBefore(
SFXXMLNodeConstPtr newchild
, SFXXMLNodeConstPtr refchild
) ノードを挿入します。
|
SFCError |
RemoveChild(
SFXXMLNodeConstPtr oldchild
) 子孫ノードも含めて子ノードを削除します。
|
SFCError |
ReplaceChild(
SFXXMLNodeConstPtr newchild
, SFXXMLNodeConstPtr oldchild
) 子ノードを置換します。
|
SFCError |
Save(
SFXAnsiStringConstRef output
, Bool indent = true
) XML 文書を保存します。
|
SFCError |
Save(
SFXPathConstRef output
, Bool indent = true
) XML 文書を保存します。
|
SFCError |
Save(
SFXOutputStreamRef output
, Bool indent = true
) XML 文書を保存します。
|
Void |
SetDocumentType(
SFXXMLDocumentTypeConstPtr doctype
) DocumentType ノードを設定します。
|
Void |
SetEncoding(
SFXAnsiStringConstRef encoding
) エンコーディングを設定します。
|
Void |
SetStandalone(
Bool standalone
) スタンドアロンの指定を行います。
|
Void |
SetVersion(
SFXAnsiStringConstRef version
) バージョン番号を設定します。
|
Bool |
EqualNode(
SFXXMLNodeConstPtr arg
)
(SFXXMLNode から継承)
指定されたノードと同等かどうかを判定します。
|
SFXXMLNodePtr |
GetNextSibling( Void )
(SFXXMLNode から継承)
【無効】次の兄弟ノードを取得します。
|
ACharConstPtr |
GetNodeValue( Void )
(SFXXMLNode から継承)
ノードの値(nodeValue 属性値)を取得します。
|
SFXXMLNodePtr |
GetParentNode( Void )
(SFXXMLNode から継承)
【無効】親ノードを取得します。
|
SFXXMLNodePtr |
GetPreviousSibling( Void )
(SFXXMLNode から継承)
【無効】前の兄弟ノードを取得します。
|
SFXAnsiString |
GetText( Void )
(SFXXMLNode から継承)
ノードテキストを取得します。
|
Bool |
IsSameNode(
SFXXMLNodeConstPtr other
)
(SFXXMLNode から継承)
指定されたノードと同一であるか判定します。
|
Void |
SetNodeValue(
ACharConstPtr value
)
(SFXXMLNode から継承)
ノードの値(nodeValue 属性値)を設定します。
|
SFCError |
SetText(
SFXAnsiStringConstRef text
)
(SFXXMLNode から継承)
ノードテキストを設定します。
|
型 |
---|
DOMNamedNodeMap
(SFXXMLNode から継承)
複数の DOM ノードを名前またはローカル名と名前空間 URI で管理するためのクラスです。
|
DOMNodeList
(SFXXMLNode から継承)
複数の DOM ノードをリスト形式で管理するためのクラスです。
|
NodeType
(SFXXMLNode から継承)
ノードタイプを表す定数です。
|
[ public, explicit ] SFXXMLDocument(Void);
このコンストラクタは、このノードをドキュメントツリーのルートとして設定します。
[ public, virtual ] virtual ~SFXXMLDocument(Void);
このデストラクタは、SFXXMLDocument::GetElementsByTagName / SFXXMLDocument::GetElementsByTagNameNS 関数と SFXXMLDocument::GetListsByTypeFilter 関数を呼び出したときの検索結果のキャッシュをクリアし、 メモリを解放します。
SFXXMLDocument::GetElementsByTagName | SFXXMLDocument::GetElementsByTagNameNS | SFXXMLDocument::GetListsByTypeFilter
[ public, virtual ] SFCError AppendChild( SFXXMLNodeConstPtr newchild // 追加するノード );
この関数は、指定されたノード(newchild ノード)をこのノードの最後の子ノードとして追加します。
newchild ノードをコピーせずにそのまま追加します。 newchild ノードが既に DOM ツリー内に存在する場合は、 最初に DOM ツリーからその子ノードを削除します。
![]() |
newchild 引数が不正になる条件 |
---|---|
以下のとき、newchild 引数は不正となり、SFERR_INVALID_PARAM エラーが返ります。
|
![]() |
注意 |
---|---|
newchild 引数には、Element / ProcessingInstruction / Comment / DocumentType の何れかのノードを指定してください。 Document ノードは、Element ノードと DocumentType ノードについてはそれぞれ最大 1 つまでしか子ノードに持てません。 |
![]() |
注意 |
---|---|
内部で SFXXMLDocument::InsertBefore(newchild, null) を呼び出しています。 |
[ public, virtual ] SFCError CloneNode( SFXXMLNodeHandle clonenode // コピー先のノード(Handle 型) Bool deep // 子ノードを再帰的にコピーするかどうか );
コピー先ノードを指定します。
true の場合、子ノードを再帰的にコピーします。
false の場合、ノード自身だけをコピーします。
[ public ] SFXXMLAttributePtr CreateAttribute( SFXAnsiStringConstRef name // 属性名: 修飾名("名前空間接頭辞:ローカル名")の指定も可能 SFXAnsiStringConstRef value // 属性値 );
Attribute ノード(SFXXMLAttribute)
この関数は、この Document ノードが所有する、指定された属性名と属性値を持つ Attribute ノードを作成します。
Attribute ノードを作成できなかった場合は、null を返します。
この関数で指定する属性名は、修飾名("名前空間接頭辞:ローカル名")の指定も可能です。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定された属性名と属性値を引数にして SFXXMLAttribute::SFXXMLAttribute コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
属性名(修飾名)と名前空間 URI を持つ Attribute ノードを作成する場合は、 SFXXMLDocument::CreateAttributeNS 関数を使用します。 作成した Attribute ノードを Element ノード(SFXXMLElement)に設定するには、 SFXXMLElement::SetAttributeNode 関数を呼び出します。 |
SFXXMLDocument document; // Attribute ノードを作成する(属性名: "ISBN"、属性値: "4-7741-1616-5") SFXXMLAttributePtr atti = document.CreateAt tribute("ISBN", "4-7741-1616-5"); // Attribute ノードを Element ノードに設定する book->SetAttributeNode(atti);
SFXXMLAttribute::SFXXMLAttribute | SFXXMLElement::SetAttributeNode | SFXXMLDocument::CreateAttributeNS | SFXXMLAttribute | SFXXMLElement | SFXXMLNode
[ public ] SFXXMLAttributePtr CreateAttributeNS( SFXAnsiStringConstRef name // 属性名: 修飾名("名前空間接頭辞:ローカル名") SFXAnsiStringConstRef namespaceURI // 属性の名前空間 URI );
Attribute ノード(SFXXMLAttribute)
この関数は、この Document ノードが所有する、指定された属性名(修飾名)と名前空間 URI を持つ Attribute ノードを作成します。
Attribute ノードを作成できなかった場合は、null を返します。
この関数で指定する属性名は修飾名("名前空間接頭辞:ローカル名")です。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定された属性名(修飾名)と名前空間 URI、 および空の属性値を引数にして SFXXMLAttribute::SFXXMLAttribute コンストラクタを呼び出します。 |
![]() |
名前空間の処理 |
---|---|
この関数で Attribute ノードを作成した段階で名前空間接頭辞を展開し、名前空間 URI と対応付けます。 この関数を実行後、SFXXMLAttribute::GetNamespaceURI / SFXXMLAttribute::GetPrefix / SFXXMLAttribute::GetLocalName 関数を呼び出すことにより、 名前空間 URI / 名前空間接頭辞 / ローカル名を取得できます。 SFXXMLAttribute::GetName または SFXXMLAttribute::GetNodeName 関数で取得できる nodeName 属性には修飾名("名前空間接頭辞:ローカル名")が設定されます。 |
![]() |
注意 |
---|---|
SFXXMLAttribute::SetValue 関数、または SFXXMLAttribute::SetNodeValue 関数を呼び出して属性値を設定する必要があります。 作成した Attribute ノードを Element ノード(SFXXMLElement)に設定するには、 SFXXMLElement::SetAttributeNodeNS 関数を呼び出します。 |
![]() |
注意 |
---|---|
名前空間 URI を持たない Attribute ノードを作成する場合は、 SFXXMLDocument::CreateAttribute 関数を使用します。 |
SFXXMLDocument document; SFXXMLElementPtr book; // 修飾名と名前空間 URI を持つ Attribute ノードを作成する SFXXMLAttributePtr atti = document.CreateAttributeNS("book:isbn","http://www.w3.org/book"); // 属性値を設定する atti->SetValue("4-7741-1616-5"); // Attribute ノードを Element ノードに設定する book->SetAttributeNode(atti); // 名前空間 URI を取得する ACharConstPtr namespaceURI = atti->GetNamespaceURI(); // 名前空間接頭辞を取得する ACharConstPtr prefix = atti->GetPrefix(); // ローカル名を取得する ACharConstPtr localname = atti->GetLocal(); // 修飾名("名前空間接頭辞:ローカル名")を取得する ACharConstPtr qname = atti->GetName();
SFXXMLAttribute::SFXXMLAttribute | SFXXMLAttribute::SetValue | SFXXMLAttribute::SetNodeValue | SFXXMLElement::SetAttributeNodeNS | SFXXMLDocument::CreateAttribute | SFXXMLAttribute::GetNamespaceURI | SFXXMLAttribute::GetPrefix | SFXXMLAttribute::GetLocalName SFXXMLAttribute::GetName | SFXXMLAttribute::GetNodeName | SFXXMLAttribute | SFXXMLElement | SFXXMLNode
[ public ] SFXXMLCDATASectionPtr CreateCDATASection( SFXAnsiStringConstRef data // CDATAセクションの内容(文字列) );
CDATASection ノード(SFXXMLCDATASection)
この関数は、この Document ノードが所有する、指定された CDATAセクションの内容(文字列)を値(nodeValue 属性値)に持つ CDATASection ノードを作成します。
CDATASection ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノードとこの関数の引数に指定された CDATAセクションの内容(文字列)を引数にして SFXXMLCDATASection::SFXXMLCDATASection コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
作成した CDATASection ノードを Element / EntityReference / DocumentFragment / Entity ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。 |
以下は、"<![CDATA[<AUTHOR age="5">Sophia Cradle</AUTHOR>]]>" という CDATASection ノードを作成するコードです。
SFXXMLDocument document; SFXXMLElementPtr book; // CDATASection ノードを作成する SFXXMLCDATASectionPtr cdata = document.CreateCDATASection("<AUTHOR age=\"5\">Sophia Cradle</AUTHOR>"); // CDATASection ノードを Element ノードに設定する book->AppendChild(SFXXMLNodePtr(cdata));
[ public ] SFXXMLCommentPtr CreateComment( SFXAnsiStringConstRef data // コメントの内容 );
Comment ノード(SFXXMLComment)
この関数は、この Document ノードが所有する、指定されたコメントの内容を値(nodeValue 属性値)に持つ Comment ノードを作成します。
Comment ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノードとこの関数の引数に指定されたコメントの内容を引数にして SFXXMLComment::SFXXMLComment コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
作成した Comment ノードを Document / Element / EntityReference / DocumentFragment / Entity ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。 |
以下は、"this a test code!" という内容の Comment ノードを作成するコードです。
SFXXMLDocument document; SFXXMLElementPtr book; // Comment ノードを作成する SFXXMLCommentPtr cdata = document.CreateComment("this a test code!"); // Comment ノードを Element ノードに追加する book->AppendChild(SFXXMLNodePtr(cdata));
[ public ] SFXXMLDocumentFragmentPtr CreateDocumentFragment(Void);
DocumentFragment ノード(SFXXMLDocumentFragment)
この関数は、この Document ノードが所有する、空の DocumentFragment ノードを作成します。
DocumentFragment ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノードを引数にして SFXXMLDocumentFragment::SFXXMLDocumentFragment コンストラクタを呼び出します。 |
[ public ] SFXXMLDocumentTypePtr CreateDocumentType( SFXAnsiStringConstRef name // 文書型名 SFXAnsiStringConstRef publicId // 外部サブセットの公開識別子 SFXAnsiStringConstRef systemId // 外部サブセットのシステム識別子 );
DocumentType ノード(SFXXMLDocumentType)
この関数は、この Document ノードが所有する、指定された文書型名、および外部サブセットの公開識別子・システム識別子を持つ DocumentType ノードを作成します。
DocumentType ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定された文書型名および外部サブセットの公開識別子・システム識別子を引数にして SFXXMLDocumentType::SFXXMLDocumentType コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
作成した DocumentType ノードを Document ノード(SFXXMLDocument)の子ノードに設定するには、 SFXXMLDocument::AppendChild 関数、SFXXMLDocument::InsertBefore 関数、 またはSFXXMLDocument::SetDocumentType 関数を呼び出します。 |
以下は、"<!DOCTYPE boot PUBLIC "public-boot.dtd">" という DocumentType ノードを作成するコードです。
SFXXMLDocument document; // DocumentType ノードを作成する SFXXMLDocumentTypePtr doctype = document.CreateDocumentType("boot","public-boot.dtd",""); // DocumentType ノードを Document ノードに追加する document.AppendChild(SFXXMLNodePtr(doctype)); // document.SetDocumentType(doctype); でもよい
SFXXMLDocumentType::SFXXMLDocumentType | SFXXMLDocument::AppendChild | SFXXMLDocument::InsertBefore | SFXXMLDocument::SetDocumentType | SFXXMLDocumentType | SFXXMLNode
[ public ] SFXXMLElementPtr CreateElement( SFXAnsiStringConstRef name // 要素名: 修飾名("名前空間接頭辞:ローカル名")の指定も可能 );
Element ノード(SFXXMLElement)
この関数は、この Document ノードが所有する、指定された要素名を持つ Element ノードを作成します。
Element ノードを作成できなかった場合は、null を返します。
この関数で指定する要素名の名前空間接頭辞は空であり、要素名はローカル名だけからなります。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定された要素名を引数にして SFXXMLElement::SFXXMLElement コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
修飾名の要素名と名前空間 URI を持つ Element ノードを作成する場合は、 SFXXMLDocument::CreateElementNS 関数を使用します。 作成した Element ノードを Document / Element / ElementReference / DocumentFragment / Entity ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。 |
以下は、"<node>node element</node>" という Element ノードを作成するコードです。
SFXXMLDocument document; SFXXMLElementPtr book; // Element ノードを作成する SFXXMLElementPtr element = document.CreateElement("node"); // Element ノードにテキストを設定する element->SetText("node element"); // Element ノードを追加する book->AppendChild(element);
[ public ] SFXXMLElementPtr CreateElementNS( SFXAnsiStringConstRef name // 要素名: 修飾名("名前空間接頭辞:ローカル名") SFXAnsiStringConstRef namespaceURI // 要素の名前空間 URI );
Element ノード(SFXXMLElement)
この関数は、この Document ノードが所有する、指定された要素名を持つ Element ノードを作成します。
Element ノードを作成できなかった場合は、null を返します。
この関数で指定する要素名は、修飾名("名前空間接頭辞:ローカル名")です。
作成した Element ノードを Document / Element / ElementReference / DocumentFragment / Entity ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。
この関数で Element ノードを作成した場合、 [xmlns:"prefix" = "名前空間 URI"] という属性(Attribute ノード)が Element ノードに自動的に設定されます。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定された要素名(修飾名)と名前空間 URI を引数にして SFXXMLElement::SFXXMLElement コンストラクタを呼び出します。 |
![]() |
名前空間の処理 |
---|---|
この関数で Element ノードを作成した段階で名前空間接頭辞を展開し、名前空間 URI と対応付けます。 この関数を実行後、SFXXMLElement::GetNamespaceURI / SFXXMLElement::GetPrefix / SFXXMLElement::GetLocalName 関数を呼び出すことにより、 名前空間 URI / 名前空間接頭辞 / ローカル名を取得できます。 SFXXMLElement::GetName または SFXXMLElement::GetNodeName 関数で取得できる nodeName 属性には修飾名("名前空間接頭辞:ローカル名")が設定されます。 |
![]() |
注意 |
---|---|
名前空間 URI を持たない Element ノードを作成する場合は、 SFXXMLDocument::CreateElement 関数を使用します。 |
以下は、"<xsd:node xmlns:xsd="http://www.w3.org/xsd">node element</xsd:node>" という Element ノードを作成するコードです。
SFXXMLDocument document; SFXXMLElementPtr book; // Element ノードを作成する ( URI は http://www.w3.org/xsd ) SFXXMLElementPtr element = document.CreateElementNS("xsd:node", "http://www.w3.org/xsd"); // Element ノードにテキストを設定する element->SetText("node element"); // Element ノードを追加する book->AppendChild(element); // 名前空間 URI を取得する ACharConstPtr namespaceURI = book->GetNamespaceURI(); // 名前空間接頭辞を取得する ACharConstPtr prefix = book->GetPrefix(); // ローカル名を取得する ACharConstPtr localname = book->GetLocal(); // 修飾名("名前空間接頭辞:ローカル名")を取得する ACharConstPtr qname = book->GetName();
SFXXMLElement::SFXXMLElement | SFXXMLDocument::CreateElement | SFXXMLElement::GetNamespaceURI | SFXXMLElement::GetPrefix | SFXXMLElement::GetLocalName | SFXXMLElement::GetName | SFXXMLElement::GetNodeName | SFXXMLElement | SFXXMLNode
[ public ] SFXXMLEntityPtr CreateEntity( SFXAnsiStringConstRef name // エンティティ名 );
Entity ノード(SFXXMLEntity)
この関数は、 この Document ノード(ドキュメントツリーのルート)が所有する、 name 引数に指定された名前(nodeName 属性値)を持つ Entity ノードを作成します。
メモリ不足などの理由で Entity ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Entity ノードとこの関数の引数に指定されたエンティティ名を引数にして SFXXMLNotation::SFXXMLNotation コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
Entity ノードの場合、nodeName 属性値は XML 文書の DTD で宣言するエンティティ名のことです。 作成した Entity ノードは、 この Document ノード(ドキュメントツリーのルート)の子ノードである DocumentType ノードに設定します。 具体的には、DocumentType ノードの SFXXMLNode::DOMNamedNodeMap::SetNamedItem 関数の引数に Entity ノードを指定します。 作成した Entity ノードは DocumentType ノードに追加します。 Entity ノードに対して SFXXMLDocument::AppendChild 関数は使えません。 DocumentType ノードに設定した Entity ノードは、 SFXXMLDocumentType::GetEntities 関数で取得できます。 |
以下は、<!ENTITY copyright "Copyright 2010, Sophia. All rights reserved"> という Entity ノードを作成し、 DocumentType ノードに設定するコードです。
SFXXMLDocument document; SFXXMLEntityPtr entity; SFXXMLDocumentTypePtr doctype; // Entity ノードを作成する entity = document.CreateEntity("copyright \"Copyright 2010, Sophia. All rights reserved\""); // DocumentType ノードに Entity ノードを設定(追加)する doctype->GetEntities()->SetNamedItem(entity);
SFXXMLEntity::SFXXMLEntity | SFXXMLDocumentType::GetEntities | SFXXMLDocument::CreateEntityReference | SFXXMLEntity | SFXXMLDocumentType SFXXMLNode
[ public ] SFXXMLEntityReferencePtr CreateEntityReference( SFXAnsiStringConstRef name // 参照するエンティティ名 );
EntityReference ノード(SFXXMLEntityReference)
この関数は、この Document ノードが所有する、指定された参照するエンティティ名を持つ EntityReference ノードを作成します。
EntityReference ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定された参照するエンティティ名を引数にして SFXXMLEntityReference::SFXXMLEntityReference コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
作成した EntityReference ノードを Element / EntityReference / DocumentFragment / Entity / Attribute ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。 |
以下は、参照するエンティティ名が "copyright" である EntityReference ノードを作成するコードです。
SFXXMLDocument document; SFXXMLElementPtr book; // EntityReference ノードを作成する SFXXMLEntityReferencePtr entityref = document.CreateEntityReference("copyright"); // EntityReference ノードを追加する book->AppendChild(SFXXMLNodePtr(entityref));
SFXXMLEntityReference::SFXXMLEntityReference | SFXXMLDocument::CreateEntity | SFXXMLEntityReference | SFXXMLNode
[ public ] SFXXMLNotationPtr CreateNotation( SFXAnsiStringConstRef name // 記法名 );
Notation ノード(SFXXMLNotation)
この関数は、 この Document ノード(ドキュメントツリーのルート)が所有する、 name 引数に指定された名前(nodeName 属性値)を持つ Notation ノードを作成します。
メモリ不足などの理由で Notation ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノードとこの関数の引数に指定された記法名を引数にして SFXXMLNotation::SFXXMLNotation コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
Notation ノードの場合、nodeName 属性値は XML 文書の DTD で宣言する記法名のことです。 作成した Notation ノードは、 この Document ノード(ドキュメントツリーのルート)の子ノードである DocumentType ノードに設定します。 具体的には、DocumentType ノードの SFXXMLNode::DOMNamedNodeMap::SetNamedItem 関数の引数に Notation ノードを指定します。 DocumentType ノードに設定した Notation ノードは、 SFXXMLDocumentType::GetNotations 関数で取得できます。 |
以下は、<!NOTATION XLS PUBLIC "http://www.microsoft.com/office/excel/"> という Notation ノードを作成し、 DocumentType ノードに設定するコードです。
SFXXMLDocument document; SFXXMLNotationPtr notation; SFXXMLDocumentTypePtr doctype; // Notation ノードを作成する notation = document.CreateNotation("XLS"); // PUBLIC 公開識別子を設定する notation->SetPublicID("http://www.microsoft.com/office/excel/"); // DocumentType ノードに Notation ノードを設定する doctype->GetNotations()->SetNamedItem(notation);
SFXXMLNotation::SFXXMLNotation | SFXXMLDocumentType::GetNotations | SFXXMLNotation | SFXXMLDocumentType SFXXMLNode
[ public ] SFXXMLProcessingInstructionPtr CreateProcessingInstruction( SFXAnsiStringConstRef target // ターゲット名 SFXAnsiStringConstRef data // 処理命令の内容 );
ProcessingInstruction ノード(SFXXMLProcessingInstruction)
この関数は、この Document ノードが所有する、指定されたターゲット名と処理命令の内容を持つ ProcessingInstruction ノードを作成します。
ProcessingInstruction ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノード、この関数の引数に指定されたターゲット名と処理命令の内容を引数にして SFXXMLProcessingInstruction::SFXXMLProcessingInstruction コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
作成した ProcessingInstruction ノードを Document / Element / EntityReference / DocumentFragment / Entity ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。 |
以下は、"<?xml-stylesheet type="text/xsl" href="viewer.xsl"?>" という ProcessingInstruction ノードを作成するコードです。
SFXXMLDocument document; // ProcessingInstruction ノードを作成する SFXXMLProcessingInstructionPtr pi = document.CreateProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"viewer.xsl\"); // ProcessingInstruction ノードを追加する document.AppendChild(pi);
SFXXMLProcessingInstruction::SFXXMLProcessingInstruction | SFXXMLProcessingInstruction | SFXXMLNode
[ public ] SFXXMLTextPtr CreateTextNode( SFXAnsiStringConstRef data // テキスト );
Text ノード(SFXXMLText)
この関数は、この Document ノードが所有する、指定されたテキストを値(nodeValue 属性値)に持つ Text ノードを作成します。
Text ノードを作成できなかった場合は、null を返します。
![]() |
注意 |
---|---|
内部的には、この Document ノードとこの関数の引数に指定されたテキストを引数にして SFXXMLText::SFXXMLText コンストラクタを呼び出します。 |
![]() |
注意 |
---|---|
作成した Text ノードを Element / EntityReference / DocumentFragment / Entity / Attribute ノードの子ノードに設定するには、 AppendChild 関数または InsertBefore 関数を呼び出します。 |
以下は、"this a new text!!" というテキストを値に持つ Text ノードを作成するコードです。
SFXXMLDocument document;
SFXXMLElementPtr element;
// Text ノードを作成し、Element ノードに追加する
element->AppendChild(SFXXMLNodePtr(document.CreateTextNode("this a new text!")));
[ public, virtual, const ] DOMNodeListPtr GetChildNodes(Void);
すべての子ノード(SFXXMLNode::DOMNodeList へのポインタ)
この関数は、このノードのすべての子ノードを取得します。
![]() |
注意 |
---|---|
子ノードが存在しない場合は null を返します。 |
![]() |
注意 |
---|---|
SFXXMLNode::DOMNodeList の各要素は、 SFXXMLNode へのポインタです。 |
[ public, const ] SFXXMLElementPtr GetDocumentElement(Void);
XML 文書の最上位要素(ルート要素)を表す Element ノード
この関数は、この Document ノードが表す XML 文書の最上位要素(ルート要素)を表す Element ノードを取得します。
![]() |
注意 |
---|---|
Document ノードは、XML 文書の最上位要素(ルート要素)を表す Element ノードを最大 1 つだけ子ノードに持ちます。 |
// XML 文書の最上位要素(ルート要素)を表す Element ノードを取得する
SFXXMLElementPtr root = document.GetDocumentElement();
[ public, const ] SFXXMLDocumentTypePtr GetDocumentType(Void);
XML 文書に関連付けられている文書型宣言を表す DocumentType ノード
この関数は、この Document ノードが表す XML 文書に関連付けられている文書型宣言を表す DocumentType ノードを取得します。
文書型宣言を持たない XML 文書の場合は null を返します。
![]() |
注意 |
---|---|
Document ノードは、XML 文書に関連付けられている文書型宣言を表す DocumentType ノードを最大 1 つだけ子ノードに持ちます。 |
[ public, const ] DOMNodeListPtr GetElementsByTagName( SFXAnsiStringConstRef tag // タグ名:名前空間が設定されている場合、修飾名("名前空間接頭辞:ローカル名")の場合もあり SFXXMLNodeConstPtr root = null // 検索開始ノード );
タグ名を指定します。大文字と小文字は区別されます。名前空間が設定されている場合、タグ名は修飾名("名前空間接頭辞:ローカル名")になる場合もあります。
root 引数に null が渡されたとき: ドキュメント全体を検索して、指定されたタグ名を持つ Element ノードのリストを返します。
root 引数にノードが渡されたとき: 渡されたノードの子孫ノードを検索して、指定されたタグ名を持つ Element ノードのリストを返します。
指定されたタグ名に一致するすべての Element ノード(SFXXMLNode::DOMNodeList)
この関数は、 DOM ツリーの指定された検索開始ノード以下で、指定されたタグ名を nodeName 属性値として持つ、すべての Element ノードを SFXXMLNode::DOMNodeList に格納して返します。
root 引数に null を指定すると、DOM ツリーの最上位ノードである Document ノードから検索を開始します。
検索結果の Element ノードのリスト(SFXXMLNode::DOMNodeList)は出現順に並びます (深さ優先探索で検索は行われます)。
条件に該当する Element ノードが存在しない場合は、null を返します。
検索結果はメモリ上にキャッシュされますので、2 回目以降の検索は高速に行えます。
![]() |
注意 |
---|---|
名前空間が設定されている場合、 この関数で指定するタグ名は修飾名("名前空間接頭辞:ローカル名")になる場合もあります。 |
![]() |
注意 |
---|---|
ローカル名と名前空間 URI で指定する場合は、 SFXXMLDocument::GetElementsByTagNameNS 関数を使用します。 |
![]() |
注意 |
---|---|
DOM ツリー内のある特定のノードタイプのノードをすべて取得する場合は、 SFXXMLDocument::GetListsByTypeFilter 関数を使用します。 |
SFXXMLDocument::GetElementsByTagNameNS | SFXXMLElement::GetElementsByTagName | SFXXMLDocument::GetListsByTypeFilter | SFXXMLNode::DOMNodeList | SFXXMLElement | SFXXMLNode
[ public, const ] DOMNodeListPtr GetElementsByTagNameNS( SFXAnsiStringConstRef localname // 要素のローカル名 SFXAnsiStringConstRef namespaceURI // 要素の名前空間 URI SFXXMLNodeConstPtr root = null // 検索開始ノード );
要素のローカル名を指定します(大文字と小文字は区別されます)。
要素の名前空間 URI を指定します。
root 引数に null が渡されたとき: ドキュメント全体を検索して、指定されたローカル名と名前空間 URI を持つ Element ノードのリストを返します。
root 引数にノードが渡されたとき: 渡されたノードの子孫ノードを検索して、指定されたローカル名と名前空間 URI を持つ Element ノードのリストを返します。
指定されたローカル名と名前空間 URI を持つすべての Element ノード(SFXXMLNode::DOMNodeList)
この関数は、 DOM ツリーの指定された検索開始ノード以下で、指定されたローカル名と名前空間 URI を持つ、すべての Element ノードを SFXXMLNode::DOMNodeList に格納して返します。
root 引数に null を指定すると、DOM ツリーの最上位ノードである Document ノードから検索を開始します。
検索結果の Element ノードのリスト(SFXXMLNode::DOMNodeList)は出現順に並びます (深さ優先探索で検索は行われます)。
条件に該当する Element ノードが存在しない場合は、null を返します。
検索結果はメモリ上にキャッシュされますので、2 回目以降の検索は高速に行えます。
![]() |
注意 |
---|---|
タグ名で指定する場合は、 SFXXMLDocument::GetElementsByTagName 関数を使用します。 |
![]() |
注意 |
---|---|
DOM ツリー内のある特定のノードタイプのノードをすべて取得する場合は、 SFXXMLDocument::GetListsByTypeFilter 関数を使用します。 |
SFXXMLDocument::GetElementsByTagName | SFXXMLElement::GetElementsByTagNameNS | SFXXMLNode::DOMNodeList | SFXXMLDocument::GetListsByTypeFilter | SFXXMLElement | SFXXMLNode
[ public, const ] ACharConstPtr GetEncoding(Void);
この Document ノードが表す XML 文書のエンコーディング
この関数は、XML 宣言の一部として、この Document ノードが表す XML 文書のエンコーディングを取得します。
[ public, virtual, const ] SFXXMLNodePtr GetFirstChild(Void);
最初の子ノード
この関数は、このノードの最初の子ノードを取得します。
![]() |
注意 |
---|---|
子ノードが存在しない場合は null を返します。 |
SFXXMLDOMParser parser; // DOM パーサー // DOM ツリーのルートノードを取得する SFXXMLDocumentPtr root = parser.GetDocument(); // XML 文書のルート要素(DOM ツリーのルートノードの最初の子ノード)を取得する SFXXMLNodePtr child = root->GetFirstChild();
[ public, virtual, const ] SFXXMLNodePtr GetLastChild(Void);
最後の子ノード
この関数は、このノードの最後の子ノードを取得します。
![]() |
注意 |
---|---|
子ノードが存在しない場合は null を返します。 |
[ public, const ] DOMNodeListPtr GetListsByTypeFilter( NodeType type // ノードタイプ );
ノードタイプ(nodeType 属性)が一致する、すべてのノード(SFXXMLNode::DOMNodeList)
この関数は、 指定されたノードタイプ(nodeType 属性)に一致する、 この Document ノード以下の DOM ツリー内のすべてのノードを取得します。
検索結果のノードのリスト(SFXXMLNode::DOMNodeList)は出現順に並びます (深さ優先探索で検索は行われます)。
条件に該当するノードが存在しない場合は、null を返します。
例えば、type 引数に COMMENT_NODE を指定した場合、 この Document ノード以下のDOM ツリー内のすべての Comment ノードを返します。
検索結果はメモリ上にキャッシュされますので、2 回目以降の検索は高速に行えます。
![]() |
注意 |
---|---|
DOM ツリー内のある特定のタグを持つ Element ノードをすべて取得する場合は、 SFXXMLDocument::GetElementsByTagName 関数を使用します。 |
SFXXMLDocument document; // ノードタイプが "ELEMENT_NODE" である、すべてのノードを取得する SFXXMLNode::DOMNodeListPtr list = document.GetListsByTypeFilter(ELEMENT_NODE); if (list) { // 各ノードを取得する SFXXMLNode::DOMNodeList::Enumerator iter = list->GetFirstEnumerator(); while (iter.HasNext()) { SFXXMLNodePtr child = iter.GetNext(); if(child->GetNodeType() == SFXXMLNode::ELEMENT_NODE) { ... } } }
SFXXMLNode::DOMNodeList | SFXXMLNode::NodeType | SFXXMLDocument::GetElementsByTagName| SFXXMLNode
[ public, virtual, const ] ACharConstPtr GetNodeName(Void);
"#document"
この関数は、このノードの名前(nodeName 属性値)を取得します。
Document ノードの場合、nodeName 属性値は "#document" です。
[ public, virtual, const ] NodeType GetNodeType(Void);
SFXXMLNode::DOCUMENT_NODE
この関数は、このノードのタイプ(nodeType 属性値)を取得します。
Document ノードの場合、nodeType 属性値は SFXXMLNode::DOCUMENT_NODE です。
[ public, const ] Bool GetStandalone(Void);
この関数は、この Document ノードが表す XML 文書について、XML 宣言のスタンドアロンの指定を取得します。
[ public, const ] ACharConstPtr GetVersion(Void);
バージョン番号
この関数は、この Document ノードが表す XML 文書について、XML 宣言のバージョン番号を取得します。
[ public, virtual, const ] Bool HasChildNodes(Void);
この関数は、このノードが子ノードを持つかどうか判定します。
[ public, virtual ] SFCError InsertBefore( SFXXMLNodeConstPtr newchild // 挿入するノード SFXXMLNodeConstPtr refchild // 参照ノード、このノードの直前に挿入される(refchild が null の場合、newchild は最後の子ノードとして挿入される) );
この関数は、newchild 引数に指定されたノード(newchild ノード)を refchild 引数に指定されたノード(refchild ノード)の前に挿入します。
newchild ノードをコピーせずにそのまま挿入します。 newchild ノードが既に DOM ツリー内に存在する場合は、 最初に DOM ツリーからその子ノードを削除します。
newchild ノードが DocumentFragment ノードの場合、 newchild ノードの代わりにその子ノードのすべてを元の順番どおりに、refchild ノードの直前に挿入します。
refchild ノードが null の場合は、一番最後の子ノードとして挿入します。 また、newchild ノードと refchild ノードが同じノードを指す場合、何も起こりません。
![]() |
newchild / refchild 引数が不正になる条件 |
---|---|
以下のとき、newchild / refchild 引数は不正となり、SFERR_INVALID_PARAM エラーが返ります。
|
![]() |
注意 |
---|---|
Document ノードは、Element ノードと DocumentType ノードについてはそれぞれ最大 1 つまでしか子ノードに持てません。 |
[ public, virtual ] SFCError RemoveChild( SFXXMLNodeConstPtr oldchild // 削除する子ノード );
この関数は、このノードから子孫ノードも含めて指定された子ノードを削除します。
[ public, virtual ] SFCError ReplaceChild( SFXXMLNodeConstPtr newchild // 置換後ノード SFXXMLNodeConstPtr oldchild // 置換前ノード );
この関数は、oldchild 引数に指定されたこのノードの子ノード(oldchild ノード)を newchild 引数に指定されたノード(newchild ノード)で置換します。
newchild ノードをコピーせずにそのまま挿入します。 newchild ノードが既に DOM ツリー内に存在する場合は、 最初に DOM ツリーからその子ノードを削除します。
oldchild ノード以下の子孫ノードは、DOM ツリーから削除され、メモリも解放されます。
newchild ノードが DocumentFragment ノードの場合、 newchild ノードの代わりにその子ノードのすべてを元の順番どおりに、oldchild ノードを置換します。
newchild ノードと oldchild ノードが同じである場合は、何も起こりません。
![]() |
newchild / oldchild 引数が不正になる条件 |
---|---|
以下のとき、newchild / oldchild 引数は不正となり、SFERR_INVALID_PARAM エラーが返ります。
|
![]() |
注意 |
---|---|
newchild 引数には、Element / ProcessingInstruction / Comment / DocumentType の何れかのノードを指定してください。 Document ノードは、Element ノードと DocumentType ノードについてはそれぞれ最大 1 つまでしか子ノードに持てません。 |
![]() |
Tip |
---|---|
内部では、SFXXMLDocument::InsertBefore(newchild, oldchild) を呼び出してから、 SFXXMLDocument::RemoveChild(oldchild) を実行します。 |
SFXXMLDocument::InsertBefore | SFXXMLDocument::RemoveChild | SFXXMLNode::ReplaceChild| SFXXMLNode
[ public ] SFCError Save( SFXAnsiStringConstRef output // ファイル名 Bool indent = true // インデントするかどうか );
[ public ] SFCError Save( SFXPathConstRef output // ファイルパス Bool indent = true // インデントするかどうか );
[ public ] SFCError Save( SFXOutputStreamRef output // ストリーム Bool indent = true // インデントするかどうか );
この関数は、 Document ノードをルートにした DOM ツリーを XML 文書として引数に指定されたファイルやストリームに書き込みます。
DOM ツリーは、ノード毎に改行して書き込まれます。
indent 引数を true(デフォルト)に指定すると、 DOM ツリーの各ノードはツリー上のレベルに応じて(ツリーのレベル)× 2 のスペースでインデントして書き込まれます。 false を指定すると、インデントは行われません。
ファイルパスはデフォルトではアプリのホームフォルダになります。
[ public ] Void SetDocumentType( SFXXMLDocumentTypeConstPtr doctype // DocumentType ノード );
この関数は、この Document ノードが表す XML 文書に関連付ける文書型宣言を表す DocumentType ノードを設定します。
デフォルト値: null
![]() |
注意 |
---|---|
Document ノードは、XML 文書に関連付けられている文書型宣言を表す DocumentType ノードを最大 1 つだけ子ノードに持ちます。 SFXXMLDocument::AppendChild 関数、または SFXXMLDocument::InsertBefore 関数を呼び出して、 DocumentType ノードを Document ノードの子ノードにするのと同等です。 |
[ public ] Void SetEncoding( SFXAnsiStringConstRef encoding // 設定するエンコーディング );
この関数は、XML 宣言の一部として、このドキュメントのエンコーディングを設定します。
デフォルト値: "UTF-8"
この関数は、この Document ノードが表す XML 文書について、XML 宣言のスタンドアロンの指定を行います。
デフォルト値: false
[ public ] Void SetVersion( SFXAnsiStringConstRef version // バージョン番号 );
この関数は、この Document ノードが表す XML 文書について、XML 宣言のバージョン番号を設定します。
デフォルト値: "1.0"
Copyright(c) 2002 - 2023 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]() ![]() |