指定したタグ名を持つ、すべてのノードを取得する
SFXXMLElement::GetElementsByTagName メソッドを使って指定したタグ名を持つ、すべてのノードを取得します。
解析対象の XML 文書( file.xml )
<fruits>
<fruit>
<name>apple</name>
<size>XS</size>
<color>red</color>
</fruit>
<fruit>
<name>banana</name>
<size>S</size>
<color>yellow</color>
</fruit>
<fruit>
<name>melon</name>
<size>XS</size>
<color>green</color>
</fruit>
</fruits>
サンプルコード
SFCError error; // エラー値 SFXXMLDOMParser parser; // DOM パーサー SFXAnsiString resultString; // 結果を格納する文字列 // file.xml に保存した XML 文書を解析する if ((error = parser.Parse("/file.xml")) == SFERR_NO_ERROR) { // ルート要素を取得する SFXXMLDocumentPtr root = parser.GetDocument(); // ルート要素の最初の子要素 ( "fruits" 要素 ) を取得する SFXXMLNodePtr child = root->GetFirstChild(); // 要素 ( "fruit" 要素 ) を取得する SFXXMLNodePtr node = child->GetFirstChild(); // "fruit" 要素のすべての子要素を取得する // SFXXMLNode::DOMNodeListPtr は SFXList<SFXXMLNodePtr> と同じ SFXXMLNode::DOMNodeListPtr nodeList = node ->GetChildNodes(); // イテレータを取得する SFXXMLNode::DOMNodeList::Iterator itor = nodeList->GetFirstIterator(); // color 要素を持つ全要素を取得する nodeList = static_cast<SFXXMLElementPtr>(child)->GetElementsByTagName("color"); // イテレータを取得する itor = nodeList->GetFirstIterator(); while (itor.HasNext()) { // 次の要素があるかぎり繰り返す // 次の要素を取得する SFXXMLNodePtr node = itor.GetNext(); // 要素のテキストを取得する resultString = node->GetText(); // 要素のテキストを表示する TRACE("%s",resultString.GetCString()); // "red" "yellow" "green" } }









