前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXXMLDocument
[XML] Document ノードを表すクラスです。
#include <SFXXMLDocument.hpp>
class SFXXMLDocument : public SFXXMLNode;
SFMTYPEDEFCLASS(SFXXMLDocument)

継承図

SFXXMLDocument クラスの継承図

協調図

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 から継承)
ノードタイプを表す定数です。

SFXXMLDocument::SFXXMLDocument
SFXXMLDocument クラスのコンストラクタです。
[ public, explicit ]
SFXXMLDocument(Void);

解説

このコンストラクタは、このノードをドキュメントツリーのルートとして設定します。

参照

SFXXMLDocument


SFXXMLDocument::~SFXXMLDocument
SFXXMLDocument クラスのデストラクタです。
[ public, virtual ]
virtual ~SFXXMLDocument(Void);

解説

このデストラクタは、SFXXMLDocument::GetElementsByTagName / SFXXMLDocument::GetElementsByTagNameNS 関数と SFXXMLDocument::GetListsByTypeFilter 関数を呼び出したときの検索結果のキャッシュをクリアし、 メモリを解放します。

参照

SFXXMLDocument::GetElementsByTagName | SFXXMLDocument::GetElementsByTagNameNS | SFXXMLDocument::GetListsByTypeFilter


SFXXMLDocument::AppendChild
子ノードの最後にノードを追加します。
[ public, virtual ]
SFCError AppendChild(
    SFXXMLNodeConstPtr newchild   // 追加するノード
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • newchild 引数が不正であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたノード(newchild ノード)をこのノードの最後の子ノードとして追加します。

newchild ノードをコピーせずにそのまま追加します。 newchild ノードが既に DOM ツリー内に存在する場合は、 最初に DOM ツリーからその子ノードを削除します。

[Note] newchild 引数が不正になる条件

以下のとき、newchild 引数は不正となり、SFERR_INVALID_PARAM エラーが返ります。

  • newchild ノードが null の場合。
  • newchild ノードを所有するドキュメントツリーのルートが、 このノードを所有するドキュメントツリーのルートでない場合。
  • newchild ノードが、このノードまたはこのノードの祖先ノードである場合。

[Note] 注意

newchild 引数には、Element / ProcessingInstruction / Comment / DocumentType の何れかのノードを指定してください。

Document ノードは、Element ノードと DocumentType ノードについてはそれぞれ最大 1 つまでしか子ノードに持てません。

[Note] 注意

内部で SFXXMLDocument::InsertBefore(newchild, null) を呼び出しています。

参照

SFXXMLDocument::InsertBefore | SFXXMLNode::AppendChild | SFXXMLNode


SFXXMLDocument::CloneNode
ノードのコピーを作成します。
[ public, virtual ]
SFCError CloneNode(
    SFXXMLNodeHandle clonenode   // コピー先のノード(Handle 型)
    Bool deep                    // 子ノードを再帰的にコピーするかどうか
);

引数

clonenode

コピー先ノードを指定します。

deep

true の場合、子ノードを再帰的にコピーします。

false の場合、ノード自身だけをコピーします。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 失敗したとき: SFERR_FAILED

参照

SFXXMLNode::CloneNode


SFXXMLDocument::CreateAttribute
指定された属性名と属性値を持つ Attribute ノードを作成します。
[ public ]
SFXXMLAttributePtr CreateAttribute(
    SFXAnsiStringConstRef name    // 属性名: 修飾名("名前空間接頭辞:ローカル名")の指定も可能
    SFXAnsiStringConstRef value   // 属性値
);

戻り値

Attribute ノード(SFXXMLAttribute)

解説

この関数は、この Document ノードが所有する、指定された属性名と属性値を持つ Attribute ノードを作成します。

Attribute ノードを作成できなかった場合は、null を返します。

この関数で指定する属性名は、修飾名("名前空間接頭辞:ローカル名")の指定も可能です。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定された属性名と属性値を引数にして SFXXMLAttribute::SFXXMLAttribute コンストラクタを呼び出します。

[Note] 注意

属性名(修飾名)と名前空間 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


SFXXMLDocument::CreateAttributeNS
指定された属性名(修飾名)と名前空間 URI を持つ Attribute ノードを作成します。
[ public ]
SFXXMLAttributePtr CreateAttributeNS(
    SFXAnsiStringConstRef name           // 属性名: 修飾名("名前空間接頭辞:ローカル名")
    SFXAnsiStringConstRef namespaceURI   // 属性の名前空間 URI
);

戻り値

Attribute ノード(SFXXMLAttribute)

解説

この関数は、この Document ノードが所有する、指定された属性名(修飾名)と名前空間 URI を持つ Attribute ノードを作成します。

Attribute ノードを作成できなかった場合は、null を返します。

この関数で指定する属性名は修飾名("名前空間接頭辞:ローカル名")です。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定された属性名(修飾名)と名前空間 URI、 および空の属性値を引数にして SFXXMLAttribute::SFXXMLAttribute コンストラクタを呼び出します。

[Note] 名前空間の処理

この関数で Attribute ノードを作成した段階で名前空間接頭辞を展開し、名前空間 URI と対応付けます。

この関数を実行後、SFXXMLAttribute::GetNamespaceURI / SFXXMLAttribute::GetPrefix / SFXXMLAttribute::GetLocalName 関数を呼び出すことにより、 名前空間 URI / 名前空間接頭辞 / ローカル名を取得できます。

SFXXMLAttribute::GetName または SFXXMLAttribute::GetNodeName 関数で取得できる nodeName 属性には修飾名("名前空間接頭辞:ローカル名")が設定されます。

[Note] 注意

SFXXMLAttribute::SetValue 関数、または SFXXMLAttribute::SetNodeValue 関数を呼び出して属性値を設定する必要があります。

作成した Attribute ノードを Element ノード(SFXXMLElement)に設定するには、 SFXXMLElement::SetAttributeNodeNS 関数を呼び出します。

[Note] 注意

名前空間 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


SFXXMLDocument::CreateCDATASection
指定された CDATAセクションの内容(文字列)を値(nodeValue 属性値)に持つ CDATASection ノードを作成します。
[ public ]
SFXXMLCDATASectionPtr CreateCDATASection(
    SFXAnsiStringConstRef data   // CDATAセクションの内容(文字列)
);

戻り値

CDATASection ノード(SFXXMLCDATASection

解説

この関数は、この Document ノードが所有する、指定された CDATAセクションの内容(文字列)を値(nodeValue 属性値)に持つ CDATASection ノードを作成します。

CDATASection ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノードとこの関数の引数に指定された CDATAセクションの内容(文字列)を引数にして SFXXMLCDATASection::SFXXMLCDATASection コンストラクタを呼び出します。

[Note] 注意

作成した 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));
>

参照

SFXXMLCDATASection::SFXXMLCDATASection | SFXXMLCDATASection | SFXXMLNode


SFXXMLDocument::CreateComment
指定されたコメントの内容を値(nodeValue 属性値)に持つ Comment ノードを作成します。
[ public ]
SFXXMLCommentPtr CreateComment(
    SFXAnsiStringConstRef data   // コメントの内容
);

戻り値

Comment ノード(SFXXMLComment

解説

この関数は、この Document ノードが所有する、指定されたコメントの内容を値(nodeValue 属性値)に持つ Comment ノードを作成します。

Comment ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノードとこの関数の引数に指定されたコメントの内容を引数にして SFXXMLComment::SFXXMLComment コンストラクタを呼び出します。

[Note] 注意

作成した 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));

参照

SFXXMLComment::SFXXMLComment | SFXXMLComment | SFXXMLNode


SFXXMLDocument::CreateDocumentFragment
空の DocumentFragment ノードを作成します。
[ public ]
SFXXMLDocumentFragmentPtr CreateDocumentFragment(Void);

戻り値

DocumentFragment ノード(SFXXMLDocumentFragment

解説

この関数は、この Document ノードが所有する、空の DocumentFragment ノードを作成します。

DocumentFragment ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノードを引数にして SFXXMLDocumentFragment::SFXXMLDocumentFragment コンストラクタを呼び出します。

参照

SFXXMLDocumentFragment::SFXXMLDocumentFragment | SFXXMLDocumentFragment | SFXXMLNode


SFXXMLDocument::CreateDocumentType
空の DocumentType ノードを作成します。
[ public ]
SFXXMLDocumentTypePtr CreateDocumentType(
    SFXAnsiStringConstRef name       // 文書型名
    SFXAnsiStringConstRef publicId   // 外部サブセットの公開識別子
    SFXAnsiStringConstRef systemId   // 外部サブセットのシステム識別子
);

戻り値

DocumentType ノード(SFXXMLDocumentType

解説

この関数は、この Document ノードが所有する、指定された文書型名、および外部サブセットの公開識別子・システム識別子を持つ DocumentType ノードを作成します。

DocumentType ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定された文書型名および外部サブセットの公開識別子・システム識別子を引数にして SFXXMLDocumentType::SFXXMLDocumentType コンストラクタを呼び出します。

[Note] 注意

作成した 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


SFXXMLDocument::CreateElement
指定された要素名を持つ Element ノードを作成します。
[ public ]
SFXXMLElementPtr CreateElement(
    SFXAnsiStringConstRef name   // 要素名: 修飾名("名前空間接頭辞:ローカル名")の指定も可能
);

戻り値

Element ノード(SFXXMLElement)

解説

この関数は、この Document ノードが所有する、指定された要素名を持つ Element ノードを作成します。

Element ノードを作成できなかった場合は、null を返します。

この関数で指定する要素名の名前空間接頭辞は空であり、要素名はローカル名だけからなります。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定された要素名を引数にして SFXXMLElement::SFXXMLElement コンストラクタを呼び出します。

[Note] 注意

修飾名の要素名と名前空間 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);

参照

SFXXMLElement::SFXXMLElement | SFXXMLDocument::CreateElementNS | SFXXMLElement | SFXXMLNode


SFXXMLDocument::CreateElementNS
指定された要素名(修飾名)と名前空間 URI を持つ 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 ノードに自動的に設定されます。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定された要素名(修飾名)と名前空間 URI を引数にして SFXXMLElement::SFXXMLElement コンストラクタを呼び出します。

[Note] 名前空間の処理

この関数で Element ノードを作成した段階で名前空間接頭辞を展開し、名前空間 URI と対応付けます。

この関数を実行後、SFXXMLElement::GetNamespaceURI / SFXXMLElement::GetPrefix / SFXXMLElement::GetLocalName 関数を呼び出すことにより、 名前空間 URI / 名前空間接頭辞 / ローカル名を取得できます。

SFXXMLElement::GetName または SFXXMLElement::GetNodeName 関数で取得できる nodeName 属性には修飾名("名前空間接頭辞:ローカル名")が設定されます。

[Note] 注意

名前空間 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


SFXXMLDocument::CreateEntity
指定されたエンティティ名を持つ Entity ノードを作成します。
[ public ]
SFXXMLEntityPtr CreateEntity(
    SFXAnsiStringConstRef name   // エンティティ名
);

戻り値

Entity ノード(SFXXMLEntity

解説

この関数は、 この Document ノード(ドキュメントツリーのルート)が所有する、 name 引数に指定された名前(nodeName 属性値)を持つ Entity ノードを作成します。

メモリ不足などの理由で Entity ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Entity ノードとこの関数の引数に指定されたエンティティ名を引数にして SFXXMLNotation::SFXXMLNotation コンストラクタを呼び出します。

[Note] 注意

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


SFXXMLDocument::CreateEntityReference
指定された参照するエンティティ名を持つ EntityReference ノードを作成します。
[ public ]
SFXXMLEntityReferencePtr CreateEntityReference(
    SFXAnsiStringConstRef name   // 参照するエンティティ名
);

戻り値

EntityReference ノード(SFXXMLEntityReference

解説

この関数は、この Document ノードが所有する、指定された参照するエンティティ名を持つ EntityReference ノードを作成します。

EntityReference ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定された参照するエンティティ名を引数にして SFXXMLEntityReference::SFXXMLEntityReference コンストラクタを呼び出します。

[Note] 注意

作成した 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


SFXXMLDocument::CreateNotation
指定された記法名を持つ Notation ノードを作成します。
[ public ]
SFXXMLNotationPtr CreateNotation(
    SFXAnsiStringConstRef name   // 記法名
);

戻り値

Notation ノード(SFXXMLNotation

解説

この関数は、 この Document ノード(ドキュメントツリーのルート)が所有する、 name 引数に指定された名前(nodeName 属性値)を持つ Notation ノードを作成します。

メモリ不足などの理由で Notation ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノードとこの関数の引数に指定された記法名を引数にして SFXXMLNotation::SFXXMLNotation コンストラクタを呼び出します。

[Note] 注意

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


SFXXMLDocument::CreateProcessingInstruction
指定されたターゲット名と処理命令の内容を持つ ProcessingInstruction ノードを作成します。
[ public ]
SFXXMLProcessingInstructionPtr CreateProcessingInstruction(
    SFXAnsiStringConstRef target   // ターゲット名
    SFXAnsiStringConstRef data     // 処理命令の内容
);

戻り値

ProcessingInstruction ノード(SFXXMLProcessingInstruction

解説

この関数は、この Document ノードが所有する、指定されたターゲット名と処理命令の内容を持つ ProcessingInstruction ノードを作成します。

ProcessingInstruction ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノード、この関数の引数に指定されたターゲット名と処理命令の内容を引数にして SFXXMLProcessingInstruction::SFXXMLProcessingInstruction コンストラクタを呼び出します。

[Note] 注意

作成した 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


SFXXMLDocument::CreateTextNode
指定されたテキストを値(nodeValue 属性値)に持つ Text ノードを作成します。
[ public ]
SFXXMLTextPtr CreateTextNode(
    SFXAnsiStringConstRef data   // テキスト
);

戻り値

Text ノード(SFXXMLText

解説

この関数は、この Document ノードが所有する、指定されたテキストを値(nodeValue 属性値)に持つ Text ノードを作成します。

Text ノードを作成できなかった場合は、null を返します。

[Note] 注意

内部的には、この Document ノードとこの関数の引数に指定されたテキストを引数にして SFXXMLText::SFXXMLText コンストラクタを呼び出します。

[Note] 注意

作成した 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!")));

参照

SFXXMLText::SFXXMLText | SFXXMLText | SFXXMLNode


SFXXMLDocument::GetChildNodes
すべての子ノードを取得します。
[ public, virtual, const ]
DOMNodeListPtr GetChildNodes(Void);

戻り値

すべての子ノード(SFXXMLNode::DOMNodeList へのポインタ)

解説

この関数は、このノードのすべての子ノードを取得します。

[Note] 注意

子ノードが存在しない場合は null を返します。

[Note] 注意

SFXXMLNode::DOMNodeList の各要素は、 SFXXMLNode へのポインタです。

参照

SFXXMLNode::DOMNodeList | SFXXMLNode::GetChildNodes | SFXXMLNode


SFXXMLDocument::GetDocumentElement
Element ノードを取得します。
[ public, const ]
SFXXMLElementPtr GetDocumentElement(Void);

戻り値

XML 文書の最上位要素(ルート要素)を表す Element ノード

解説

この関数は、この Document ノードが表す XML 文書の最上位要素(ルート要素)を表す Element ノードを取得します。

[Note] 注意

Document ノードは、XML 文書の最上位要素(ルート要素)を表す Element ノードを最大 1 つだけ子ノードに持ちます。

使用例

// XML 文書の最上位要素(ルート要素)を表す Element ノードを取得する 
SFXXMLElementPtr root = document.GetDocumentElement();

参照

SFXXMLDocument | SFXXMLElement | SFXXMLNode


SFXXMLDocument::GetDocumentType
DocumentType ノードを取得します。
[ public, const ]
SFXXMLDocumentTypePtr GetDocumentType(Void);

戻り値

XML 文書に関連付けられている文書型宣言を表す DocumentType ノード

解説

この関数は、この Document ノードが表す XML 文書に関連付けられている文書型宣言を表す DocumentType ノードを取得します。

文書型宣言を持たない XML 文書の場合は null を返します。

[Note] 注意

Document ノードは、XML 文書に関連付けられている文書型宣言を表す DocumentType ノードを最大 1 つだけ子ノードに持ちます。

参照

SFXXMLDocument::SetDocumentType | SFXXMLDocumentType | SFXXMLNode


SFXXMLDocument::GetElementsByTagName
DOM ツリーの指定された検索開始ノード以下で、指定されたタグ名を持つ、すべての Element ノードを取得します。
[ public, const ]
DOMNodeListPtr GetElementsByTagName(
    SFXAnsiStringConstRef tag        // タグ名:名前空間が設定されている場合、修飾名("名前空間接頭辞:ローカル名")の場合もあり
    SFXXMLNodeConstPtr root = null   // 検索開始ノード
);

引数

tag

タグ名を指定します。大文字と小文字は区別されます。名前空間が設定されている場合、タグ名は修飾名("名前空間接頭辞:ローカル名")になる場合もあります。

root

root 引数に null が渡されたとき: ドキュメント全体を検索して、指定されたタグ名を持つ Element ノードのリストを返します。

root 引数にノードが渡されたとき: 渡されたノードの子孫ノードを検索して、指定されたタグ名を持つ Element ノードのリストを返します。

戻り値

指定されたタグ名に一致するすべての Element ノード(SFXXMLNode::DOMNodeList

解説

この関数は、 DOM ツリーの指定された検索開始ノード以下で、指定されたタグ名を nodeName 属性値として持つ、すべての Element ノードを SFXXMLNode::DOMNodeList に格納して返します。

root 引数に null を指定すると、DOM ツリーの最上位ノードである Document ノードから検索を開始します。

検索結果の Element ノードのリスト(SFXXMLNode::DOMNodeList)は出現順に並びます (深さ優先探索で検索は行われます)。

条件に該当する Element ノードが存在しない場合は、null を返します。

検索結果はメモリ上にキャッシュされますので、2 回目以降の検索は高速に行えます。

[Note] 注意

名前空間が設定されている場合、 この関数で指定するタグ名は修飾名("名前空間接頭辞:ローカル名")になる場合もあります。

[Note] 注意

ローカル名と名前空間 URI で指定する場合は、 SFXXMLDocument::GetElementsByTagNameNS 関数を使用します。

[Note] 注意

DOM ツリー内のある特定のノードタイプのノードをすべて取得する場合は、 SFXXMLDocument::GetListsByTypeFilter 関数を使用します。

参照

SFXXMLDocument::GetElementsByTagNameNS | SFXXMLElement::GetElementsByTagName | SFXXMLDocument::GetListsByTypeFilter | SFXXMLNode::DOMNodeList | SFXXMLElement | SFXXMLNode


SFXXMLDocument::GetElementsByTagNameNS
DOM ツリーの指定された検索開始ノード以下で、指定されたローカル名と名前空間 URI を持つ、すべての Element ノードを取得します。
[ public, const ]
DOMNodeListPtr GetElementsByTagNameNS(
    SFXAnsiStringConstRef localname      // 要素のローカル名
    SFXAnsiStringConstRef namespaceURI   // 要素の名前空間 URI
    SFXXMLNodeConstPtr root = null       // 検索開始ノード
);

引数

localname

要素のローカル名を指定します(大文字と小文字は区別されます)。

namespaceURI

要素の名前空間 URI を指定します。

root

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 回目以降の検索は高速に行えます。

[Note] 注意

タグ名で指定する場合は、 SFXXMLDocument::GetElementsByTagName 関数を使用します。

[Note] 注意

DOM ツリー内のある特定のノードタイプのノードをすべて取得する場合は、 SFXXMLDocument::GetListsByTypeFilter 関数を使用します。

参照

SFXXMLDocument::GetElementsByTagName | SFXXMLElement::GetElementsByTagNameNS | SFXXMLNode::DOMNodeList | SFXXMLDocument::GetListsByTypeFilter | SFXXMLElement | SFXXMLNode


SFXXMLDocument::GetEncoding
エンコーディングを取得します。
[ public, const ]
ACharConstPtr GetEncoding(Void);

戻り値

この Document ノードが表す XML 文書のエンコーディング

解説

この関数は、XML 宣言の一部として、この Document ノードが表す XML 文書のエンコーディングを取得します。

参照

SFXXMLDocument::SetEncoding


SFXXMLDocument::GetFirstChild
最初の子ノードを取得します。
[ public, virtual, const ]
SFXXMLNodePtr GetFirstChild(Void);

戻り値

最初の子ノード

解説

この関数は、このノードの最初の子ノードを取得します。

[Note] 注意

子ノードが存在しない場合は null を返します。

使用例

SFXXMLDOMParser parser; // DOM パーサー
    
// DOM ツリーのルートノードを取得する
SFXXMLDocumentPtr root = parser.GetDocument(); 

// XML 文書のルート要素(DOM ツリーのルートノードの最初の子ノード)を取得する
SFXXMLNodePtr child = root->GetFirstChild();  

参照

SFXXMLNode::GetFirstChild | SFXXMLNode


SFXXMLDocument::GetLastChild
最後の子ノードを取得します。
[ public, virtual, const ]
SFXXMLNodePtr GetLastChild(Void);

戻り値

最後の子ノード

解説

この関数は、このノードの最後の子ノードを取得します。

[Note] 注意

子ノードが存在しない場合は null を返します。

参照

SFXXMLNode::GetLastChild | SFXXMLNode


SFXXMLDocument::GetListsByTypeFilter
指定されたノードタイプ(nodeType 属性)に一致する、DOM ツリー内のすべてのノードを取得します。
[ public, const ]
DOMNodeListPtr GetListsByTypeFilter(
    NodeType type   // ノードタイプ
);

戻り値

ノードタイプ(nodeType 属性)が一致する、すべてのノード(SFXXMLNode::DOMNodeList

解説

この関数は、 指定されたノードタイプ(nodeType 属性)に一致する、 この Document ノード以下の DOM ツリー内のすべてのノードを取得します。

検索結果のノードのリスト(SFXXMLNode::DOMNodeList)は出現順に並びます (深さ優先探索で検索は行われます)。

条件に該当するノードが存在しない場合は、null を返します。

例えば、type 引数に COMMENT_NODE を指定した場合、 この Document ノード以下のDOM ツリー内のすべての Comment ノードを返します。

検索結果はメモリ上にキャッシュされますので、2 回目以降の検索は高速に行えます。

[Note] 注意

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


SFXXMLDocument::GetNodeName
ノードの名前(nodeName 属性値)を取得します。
[ public, virtual, const ]
ACharConstPtr GetNodeName(Void);

戻り値

"#document"

解説

この関数は、このノードの名前(nodeName 属性値)を取得します。

Document ノードの場合、nodeName 属性値は "#document" です。

参照

SFXXMLNode::GetNodeName| SFXXMLNode


SFXXMLDocument::GetNodeType
ノードタイプ(nodeType 属性値)を取得します。
[ public, virtual, const ]
NodeType GetNodeType(Void);

戻り値

SFXXMLNode::DOCUMENT_NODE

解説

この関数は、このノードのタイプ(nodeType 属性値)を取得します。

Document ノードの場合、nodeType 属性値は SFXXMLNode::DOCUMENT_NODE です。

参照

SFXXMLNode::NodeType | SFXXMLNode::GetNodeType| SFXXMLNode


SFXXMLDocument::GetStandalone
スタンドアロンの指定を取得します。
[ public, const ]
Bool GetStandalone(Void);

戻り値

  • 指定されているとき: true
  • そうでないとき: false

解説

この関数は、この Document ノードが表す XML 文書について、XML 宣言のスタンドアロンの指定を取得します。

参照

SFXXMLDocument::SetStandalone


SFXXMLDocument::GetVersion
バージョン番号を取得します。
[ public, const ]
ACharConstPtr GetVersion(Void);

戻り値

バージョン番号

解説

この関数は、この Document ノードが表す XML 文書について、XML 宣言のバージョン番号を取得します。

参照

SFXXMLDocument::SetVersion


SFXXMLDocument::HasChildNodes
子ノードを持つかどうか判定します。
[ public, virtual, const ]
Bool HasChildNodes(Void);

戻り値

  • 子ノードを持つとき: true
  • そうでないとき: false

解説

この関数は、このノードが子ノードを持つかどうか判定します。

参照

SFXXMLNode::HasChildNodes| SFXXMLNode


SFXXMLDocument::InsertBefore
ノードを挿入します。
[ public, virtual ]
SFCError InsertBefore(
    SFXXMLNodeConstPtr newchild   // 挿入するノード
    SFXXMLNodeConstPtr refchild   // 参照ノード、このノードの直前に挿入される(refchild が null の場合、newchild は最後の子ノードとして挿入される)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • newchild / refchild 引数が不正であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、newchild 引数に指定されたノード(newchild ノード)を refchild 引数に指定されたノード(refchild ノード)の前に挿入します。

newchild ノードをコピーせずにそのまま挿入します。 newchild ノードが既に DOM ツリー内に存在する場合は、 最初に DOM ツリーからその子ノードを削除します。

newchild ノードが DocumentFragment ノードの場合、 newchild ノードの代わりにその子ノードのすべてを元の順番どおりに、refchild ノードの直前に挿入します。

refchild ノードが null の場合は、一番最後の子ノードとして挿入します。 また、newchild ノードと refchild ノードが同じノードを指す場合、何も起こりません。

[Note] newchild / refchild 引数が不正になる条件

以下のとき、newchild / refchild 引数は不正となり、SFERR_INVALID_PARAM エラーが返ります。

  • newchild ノードが null の場合。
  • newchild ノードを所有するドキュメントツリーのルートが、 このノードを所有するドキュメントツリーのルートでない場合。
  • refchild ノードの親がこのノードでない場合。
  • newchild ノードが、このノードまたはこのノードの祖先ノードである場合。
  • newchild ノードが、Element / ProcessingInstruction / Comment / DocumentType の何れのノードでもない場合。

[Note] 注意

Document ノードは、Element ノードと DocumentType ノードについてはそれぞれ最大 1 つまでしか子ノードに持てません。

参照

SFXXMLNode::InsertBefore| SFXXMLNode


SFXXMLDocument::RemoveChild
子孫ノードも含めて子ノードを削除します。
[ public, virtual ]
SFCError RemoveChild(
    SFXXMLNodeConstPtr oldchild   // 削除する子ノード
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • oldchild 引数が null であるとき、またはこのノードの子ノードでないとき: SFERR_INVALID_PARAM
  • 失敗したとき: SFERR_FAILED

解説

この関数は、このノードから子孫ノードも含めて指定された子ノードを削除します。

参照

SFXXMLNode::RemoveChild| SFXXMLNode


SFXXMLDocument::ReplaceChild
子ノードを置換します。
[ public, virtual ]
SFCError ReplaceChild(
    SFXXMLNodeConstPtr newchild   // 置換後ノード
    SFXXMLNodeConstPtr oldchild   // 置換前ノード
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • newchild / oldchild 引数が不正であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

解説

この関数は、oldchild 引数に指定されたこのノードの子ノード(oldchild ノード)を newchild 引数に指定されたノード(newchild ノード)で置換します。

newchild ノードをコピーせずにそのまま挿入します。 newchild ノードが既に DOM ツリー内に存在する場合は、 最初に DOM ツリーからその子ノードを削除します。

oldchild ノード以下の子孫ノードは、DOM ツリーから削除され、メモリも解放されます。

newchild ノードが DocumentFragment ノードの場合、 newchild ノードの代わりにその子ノードのすべてを元の順番どおりに、oldchild ノードを置換します。

newchild ノードと oldchild ノードが同じである場合は、何も起こりません。

[Note] newchild / oldchild 引数が不正になる条件

以下のとき、newchild / oldchild 引数は不正となり、SFERR_INVALID_PARAM エラーが返ります。

  • newchild ノード、またはoldchild ノードが null の場合。
  • newchild ノードを所有するドキュメントツリーのルートが、 このノードを所有するドキュメントツリーのルートでない場合。
  • oldchild ノードの親がこのノードでない場合。
  • newchild ノードが、このノードまたはこのノードの祖先ノードである場合。

[Note] 注意

newchild 引数には、Element / ProcessingInstruction / Comment / DocumentType の何れかのノードを指定してください。

Document ノードは、Element ノードと DocumentType ノードについてはそれぞれ最大 1 つまでしか子ノードに持てません。

[Tip] Tip

内部では、SFXXMLDocument::InsertBefore(newchild, oldchild) を呼び出してから、 SFXXMLDocument::RemoveChild(oldchild) を実行します。

参照

SFXXMLDocument::InsertBefore | SFXXMLDocument::RemoveChild | SFXXMLNode::ReplaceChild| SFXXMLNode


SFXXMLDocument::Save
XML 文書を保存します。
[ public ]
SFCError Save(
    SFXAnsiStringConstRef output   // ファイル名
    Bool indent = true             // インデントするかどうか
);
[ public ]
SFCError Save(
    SFXPathConstRef output   // ファイルパス
    Bool indent = true       // インデントするかどうか
);
[ public ]
SFCError Save(
    SFXOutputStreamRef output   // ストリーム
    Bool indent = true          // インデントするかどうか
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY
  • ファイルが既に開いているとき: SFERR_INVALID_STATE
  • 引数がディレクトリであるとき: SFERR_INVALID_PARAM
  • 子ノードが存在しないとき: SFERR_FAILED
  • その他: BREW API IFILEMGR_GetLastError 関数が返すエラー、またはSFERR_FAILED

解説

この関数は、 Document ノードをルートにした DOM ツリーを XML 文書として引数に指定されたファイルやストリームに書き込みます。

DOM ツリーは、ノード毎に改行して書き込まれます。

indent 引数を true(デフォルト)に指定すると、 DOM ツリーの各ノードはツリー上のレベルに応じて(ツリーのレベル)× 2 のスペースでインデントして書き込まれます。 false を指定すると、インデントは行われません。

ファイルパスはデフォルトではアプリのホームフォルダになります。

参照

SFXFile::OpenReadWrite | BREW API IFILEMGR_GetLastError


SFXXMLDocument::SetDocumentType
DocumentType ノードを設定します。
[ public ]
Void SetDocumentType(
    SFXXMLDocumentTypeConstPtr doctype   // DocumentType ノード
);

解説

この関数は、この Document ノードが表す XML 文書に関連付ける文書型宣言を表す DocumentType ノードを設定します。

デフォルト値: null

[Note] 注意

Document ノードは、XML 文書に関連付けられている文書型宣言を表す DocumentType ノードを最大 1 つだけ子ノードに持ちます。

SFXXMLDocument::AppendChild 関数、または SFXXMLDocument::InsertBefore 関数を呼び出して、 DocumentType ノードを Document ノードの子ノードにするのと同等です。

参照

SFXXMLDocument::AppendChild | SFXXMLDocument::InsertBefore | SFXXMLDocument::GetDocumentType


SFXXMLDocument::SetEncoding
エンコーディングを設定します。
[ public ]
Void SetEncoding(
    SFXAnsiStringConstRef encoding   // 設定するエンコーディング
);

解説

この関数は、XML 宣言の一部として、このドキュメントのエンコーディングを設定します。

デフォルト値: "UTF-8"

参照

SFXXMLDocument::GetEncoding


SFXXMLDocument::SetStandalone
スタンドアロンの指定を行います。
[ public ]
Void SetStandalone(
    Bool standalone   // スタンドアロンかどうか
);

解説

この関数は、この Document ノードが表す XML 文書について、XML 宣言のスタンドアロンの指定を行います。

デフォルト値: false

参照

SFXXMLDocument::GetStandalone


SFXXMLDocument::SetVersion
バージョン番号を設定します。
[ public ]
Void SetVersion(
    SFXAnsiStringConstRef version   // バージョン番号
);

解説

この関数は、この Document ノードが表す XML 文書について、XML 宣言のバージョン番号を設定します。

デフォルト値: "1.0"

参照

SFXXMLDocument::GetVersion