ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

複数の DOM ノードをリストで管理する

SFXXMLNode::DOMNodeList クラスを使って、複数の DOM ノードをリストで管理します。

解析対象の XML 文書(file.xml)
<fruit>
  <name>apple</name>
  <size>XS</size>  
  <color>red</color>
</fruit>
SFXXMLNode::DOMNodeList からすべての要素を取得するサンプルコード
SFCError error;             // エラー値
SFXXMLDOMParser parser;     // DOM パーサー
SFXAnsiString resultString; // 結果を格納する文字列

// file.xml に保存した XML 文書を解析する
if ((error = parser.Parse("/file.xml")) == SFERR_NO_ERROR) {

    // ルート要素を取得する
    SFXXMLDocumentPtr root = parser.GetDocument(); 
    // ルート要素の最初の子要素 ( "fruit" 要素 ) を取得する
    SFXXMLNodePtr child = root->GetFirstChild();   

    // "fruit" 要素のすべての子要素を取得する
    // SFXXMLNode::DOMNodeListPtr は SFXList と同じ
    SFXXMLNode::DOMNodeListPtr nodeList = child->GetChildNodes();

    // イテレータを取得する
    SFXXMLNode::DOMNodeList::Iterator itor = nodeList->GetIterator();

    while (itor.HasNext()) { // 次の要素があるかぎり繰り返す

        // "name"要素、"size"要素、"color" 要素の順に取得できる
        SFXXMLNodePtr node = itor.GetNext();

        // 要素の名前を取得する
        resultString = node->GetNodeName();

        // 要素のテキストを取得する
        // "name" の場合は "apple"、"size" の場合は "XS" 
        resultString = node->GetText();
        // 要素のテキストを表示する
        TRACE("%s",resultString.GetCString());
    }
}