![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |
#include <SFXXMLElement.hpp>
class SFXXMLElement : public SFXXMLNode;
SFMTYPEDEFCLASS(SFXXMLElement)


Element ノード(SFXXMLElement) は、XML 文書の要素を保持します。
Element ノードには、SFXXMLElement::SetAttributeNode や SFXXMLElement::SetAttribute 関数を使って、Attribute ノード(SFXXMLAttribute)を設定できます。
Element ノードに設定された Attribute ノードは、SFXXMLElement::GetAttributeNode や SFXXMLElement::GetAttributes 関数を使って取得します。
SFXXMLNode | SFXXMLAttribute | SFXXMLCDATASection | SFXXMLComment | SFXXMLDocument | SFXXMLDocumentFragment | SFXXMLDocumentType | SFXXMLEntity | SFXXMLEntityReference | SFXXMLNotation | SFXXMLProcessingInstruction | SFXXMLText
| コンストラクタ/デストラクタ |
|---|
|
SFXXMLElement(
SFXXMLDocumentPtr owner
, SFXAnsiStringConstRef name
) SFXXMLElement( SFXXMLDocumentPtr owner , SFXAnsiStringConstRef name , SFXAnsiStringConstRef namespaceURI ) SFXXMLElement( SFXXMLElementConstRef other , Bool deep = false ) SFXXMLElement クラスのコンストラクタです。
|
|
~SFXXMLElement( Void ) SFXXMLElement クラスのデストラクタです。
|
| 型 |
|---|
|
DOMNamedNodeMap
(SFXXMLNode から継承)
複数の DOM ノードを名前で管理するためのクラスです。
|
|
DOMNodeList
(SFXXMLNode から継承)
複数の DOM ノードをリスト形式で管理するためのクラスです。
|
|
NodeType
(SFXXMLNode から継承)
ノード タイプの数値です。
|
[ public, explicit ]
SFXXMLElement(
SFXXMLDocumentPtr owner // ルート
SFXAnsiStringConstRef name // 要素の名前
);
[ public, explicit ]
SFXXMLElement(
SFXXMLDocumentPtr owner // ルート
SFXAnsiStringConstRef name // 要素の名前
SFXAnsiStringConstRef namespaceURI // 要素の名前空間 URI
);
[ public, explicit ]
SFXXMLElement(
SFXXMLElementConstRef other // Element ノード
Bool deep = false // 子ノードを再帰的にコピーするかどうか
);
[ public, virtual ] virtual ~SFXXMLElement(Void);
[ public, virtual ] SFCError AppendChild( SFXXMLNodeConstPtr newchild // 追加するノード );
newchild ノードをコピーせずにそのまま追加します。
newchild ノードが DOM ツリー内に存在する場合、newchild ノードは DOM ツリーから削除されます。
[ public, virtual ] SFCError CloneNode( SFXXMLNodeHandle clonenode // コピー先のノード( Handle 型 ) Bool deep // 子ノードが再帰的にコピーされるかどうか );
コピー先ノードを指定します。
true の場合、子ノードを再帰的にコピーします。 false の場合、ノード自身とElement ノードに関連付けられた Attribute ノードだけをコピーします。
[ public, virtual, const ] Bool EqualNode( SFXXMLNodeConstPtr arg // 同等性を比較する対象のノード );
[ public, const ] ACharConstPtr GetAttribute( SFXAnsiStringConstRef name // 属性の名前 );
指定した名前の属性値を返します。属性値がない場合は null を返します。
![]() |
注意 |
|---|---|
| 属性の名前として修飾名(名前空間接頭辞とローカル名の対)も使えます。 | |
// xmlns:dt 属性の値を取得する
SFXAnsiString atti = boot->GetAttribute("xmlns:dt");
SFXXMLElement::GetAttributes | SFXXMLElement::GetAttributeNode | SFXXMLElement::SetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::HasAttribute | SFXXMLElement::HasAttributes | SFXXMLElement::RemoveAttribute | SFXXMLElement::RemoveAttributeNode
[ public, const ] SFXXMLAttributePtr GetAttributeNode( SFXAnsiStringConstRef name // Attribute ノードの名前 );
指定した名前を持つ Attribute ノードを返します。存在しない場合は null を返します。
![]() |
注意 |
|---|---|
| Attribute ノードの名前とは、XML 文書の属性名のことです。 | |
![]() |
注意 |
|---|---|
| Attribute ノードの名前として修飾名(名前空間接頭辞とローカル名の対)も指定できます。 | |
// "xmlns:dt" Attribute ノードを取得する
SFXXMLAttributePtr atti = boot->GetAttributeNode("xmlns:dt");
SFXXMLElement::GetAttribute | SFXXMLElement::GetAttributeNode | SFXXMLElement::SetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::HasAttribute | SFXXMLElement::HasAttributes | SFXXMLElement::RemoveAttribute | SFXXMLElement::RemoveAttributeNode
[ public, const ] DOMNamedNodeMapPtr GetAttributes(Void);
Element ノードに含まれるすべての Attribute ノードを SFXXMLNode::DOMNamedNodeMap へのポインターとして返します。 Attribute ノードが存在しない場合、 null を返します。
// Element ノードに Attribute ノードがあるかどうか判定する if (SFXXMLElementPtr(child)->HasAttributes()) { // Element ノードに Attribute ノードがあれば DOMNamedNodeMap へのポインターを返す SFXXMLNode::DOMNamedNodeMapPtr attr = SFXXMLElementPtr(child)->GetAttributes(); if (attr) { for (int i = 0; i < attr->GetLength(); i++) { SFXXMLNodePtr item = attr->Item(i); if (item) { if(item->GetNodeType() == SFXXMLNode::ATTRIBUTE_NODE); ... } } } }
SFXXMLNode::DOMNamedNodeMap | SFXXMLElement::GetAttribute | SFXXMLElement::SetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::HasAttribute | SFXXMLElement::HasAttributes | SFXXMLElement::GetAttributeNode | SFXXMLElement::RemoveAttribute | SFXXMLElement::RemoveAttributeNode
[ public, virtual, const ] DOMNodeListPtr GetChildNodes(Void);
指定したノードのすべての子ノードを SFXXMLNode::DOMNodeList へのポインターとして返します。子ノードがないときは null を返します。
![]() |
注意 |
|---|---|
| SFXXMLNode::DOMNodeList の各要素は、SFXXMLNode 型へのポインターです。 | |
// タグ名が "BOOK" である Element ノードを取得する SFXXMLNode::DOMNodeListPtr list = root->GetElementsByTagName("BOOK"); if (list) { // 列挙子を取得する SFXXMLNode::DOMNodeList::Enumerator enumer = list->GetFirstEnumerator(); while (enumer.HasNext()) { // 各 Element ノードを取得する SFXXMLElementPtr elem = static_cast<SFXXMLElementPtr>(enumer.GetNext()); // 各 Element ノードのすべての子ノードを取得する SFXXMLNode::DOMNodeListPtr nodeList = elem->GetChildNodes(); // 子ノードの列挙子を取得する SFXXMLNode::DOMNodeList::Enumerator childiter = nodeList->GetFirstEnumerator(); while (childiter.HasNext()) { SFXXMLElementPtr child = static_cast<SFXXMLElementPtr>(childiter.GetNext()); TRACE("child name: %s", child->GetName()); // 子ノードの名前を表示する TRACE("child text: %s", child->GetText().GetCString()); // 子ノードの内容をまとめた文字列を表示する } } }
[ public, const ]
DOMNodeListPtr GetElementsByTagName(
SFXAnsiStringConstRef name // タグ名
);タグ名が一致するすべての Element ノードを返します。
指定したタグ名を持つすべての Element ノードを SFXXMLNode::DOMNodeList へのポインターとして返します。リストはタグの出現順になっています。
SFCError error; // エラー値 SFXXMLDOMParser parser; // DOM パーサー SFXAnsiString resultString; // Element ノードのテキストを一時的に格納するための変数 // XML 文書 "apple.xml" を解析する if ((error = parser.Parse("/apple.xml")) == SFERR_NO_ERROR) { // DOM ツリーのルート ノードを取得する SFXXMLDocumentPtr root = parser.GetDocument(); // XML 文書のルート要素(DOM ツリーのルート ノードの最初の子ノード。この場合、fruit 要素)を取得する SFXXMLNodePtr child = root->GetFirstChild(); // fruit 要素のすべての子要素(子ノード)を取得する // SFXXMLNode::DOMNodeListPtr は SFXList<SFXXMLNodePtr> と同じ SFXXMLNode::DOMNodeListPtr nodeList = child->GetChildNodes(); // イテレータを取得する SFXXMLNode::DOMNodeList::Iterator itor = nodeList->GetFirstIterator(); // タグ名が "color" である、すべての Element ノードを取得する nodeList = static_cast<SFXXMLElementPtr>(child)->GetElementsByTagName("color"); // イテレータを取得する itor = nodeList->GetFirstIterator(); // 取得した すべての Element ノードのテキストを表示する while (itor.HasNext()) { // 次の Element ノードを取得する SFXXMLNodePtr node = itor.GetNext(); // Element ノードのテキストを取得する resultString = node->GetText(); // Element ノードのテキストを表示する TRACE("%s",resultString.GetCString()); } }
[ public, virtual, const ] SFXXMLNodePtr GetFirstChild(Void);
最初の子ノードを返します。子ノードがないときは null を返します。
[ public, virtual, const ] SFXXMLNodePtr GetLastChild(Void);
最後の子ノードを返します。子ノードがないときは null を返します。
[ public, const ] ACharConstPtr GetLocalName(Void);
Element ノードの名前(要素名)に設定されているローカル名を返します。
Element ノードの名前(要素名)が修飾名である場合、 名前は名前空間接頭辞とローカル名の対からなります。
![]() |
注意 |
|---|---|
| Element ノードの名前とは XML 文書の「要素名」のことです。 | |
[ public, const ] ACharConstPtr GetName(Void);
SFXXMLElement::GetNodeName 関数を呼び出すのと同等です。
![]() |
注意 |
|---|---|
| Element ノードの名前とは XML 文書の「要素名」のことです。 | |
![]() |
注意 |
|---|---|
| 名前空間が設定されている場合、修飾名(名前空間接頭辞とローカル名)が返されます。 | |
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
version="1.0">
<xsl:output encoding="Shift_JIS" method="xml"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html>
<head>
<title>words</title>
</head>
<body bgcolor="#CCFFFF">
<center>
<table border="0">
<xsl:apply-templates select=".//def"/>
</table>
</center>
</body>
</html>
</xsl:template>
<xsl:template match="def">
<tr><td><b><xsl:apply-templates/></b></td></tr>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
// Element ノードを取得する
SFXXMLElementPtr stylesheet = document.GetDocumentElement();
TRACE("Element's name = %s", stylesheet->GetName()); // 修飾名 = xsl:stylesheet
TRACE("Element's localname = %s", stylesheet->GetLocalName()); // ローカル名 = stylesheet
TRACE("Element's prefix = %s", stylesheet->GetPrefix()); // 名前空間接頭辞 = xsl
TRACE("Element's uri = %s", stylesheet->GetNamespaceURI()); // 名前空間 URI = http://www.w3.org/1999/XSL/Transform
SFXXMLElement::GetLocalName | SFXXMLElement::GetNodeName | SFXXMLElement::GetPrefix | SFXXMLElement::GetNamespaceURI
[ public, const ] ACharConstPtr GetNamespaceURI(Void);
Element ノードの名前(要素名)に設定されている名前空間 URIを返します。
設定されていない場合は null を返します。
[ public, virtual, const ] SFXXMLNodePtr GetNextSibling(Void);
指定したノードの次の兄弟ノードを返します。次の兄弟ノードが存在しないときは null を返します。
SFXXMLDOMParser parser; // DOM パーサー // DOM ツリーのルートを取得する SFXXMLDocumentPtr root = parser.GetDocument(); // ルートの 1 番目の子ノード(XML 文書のルート要素)を取得する SFXXMLNodePtr node = root->GetFirstChild(); // Element ノードへのポインターに型変換する SFXXMLElementPtr elem = static_cast<SFXXMLElementPtr>(node); SFXXMLNodePtr child = elem->GetFirstChild(); // 最初の子ノードを取得する SFXXMLNodePtr author = child->GetNextSibling(); // 次の兄弟ノードを取得する
SFXXMLElement::GetPreviousSibling | SFXXMLNode::GetNextSibling| SFXXMLNode::GetPreviousSibling | SFXXMLNode
[ public, virtual, const ] ACharConstPtr GetNodeName(Void);
SFXXMLElement::GetName 関数を呼び出すのと同等です。
![]() |
注意 |
|---|---|
| Element ノードの名前とは XML 文書の「要素名」のことです。 | |
![]() |
注意 |
|---|---|
| 名前空間が設定されている場合、修飾名(名前空間接頭辞とローカル名)が返されます。 | |
[ public, virtual, const ] NodeType GetNodeType(Void);
ELEMENT_NODE を返します。
[ public, virtual, const ] SFXXMLNodePtr GetParentNode(Void);
親ノードを返します。親ノードがない場合は、null を返します。
[ public, const ] ACharConstPtr GetPrefix(Void);
Element ノードの名前(要素名)に設定されている名前空間接頭辞を返します。 設定されていないときは null を返します。
Element ノードの名前(要素名)が修飾名である場合、名前は名前空間接頭辞とローカル名の対からなります。
![]() |
注意 |
|---|---|
| Element ノードの名前とは XML 文書の「要素名」のことです。 | |
[ public, virtual, const ] SFXXMLNodePtr GetPreviousSibling(Void);
指定したノードの前の兄弟ノードを返します。前の兄弟ノードがないときは null を返します。
SFXXMLElement::GetNextSibling | SFXXMLNode::GetPreviousSibling | SFXXMLNode::GetNextSibling | SFXXMLNode
[ public, const ] Bool HasAttribute( SFXAnsiStringConstRef name // 属性の名前 );
// "isdn" という名前の Attribute ノードを持つかどうかを判定する
if(book->HasAttribute("isdn") == false){
....
}
SFXXMLElement::HasAttributes | SFXXMLElement::SetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::SetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::GetAttribute | SFXXMLElement::GetAttributes | SFXXMLElement::RemoveAttribute | SFXXMLElement::RemoveAttributeNode
[ public, const ] Bool HasAttributes(Void);
// Attribute ノードを持つかどうかを判定する
if(book->HasAttributes() == false){
.....
}
SFXXMLElement::HasAttribute | SFXXMLElement::GetAttribute | SFXXMLElement::GetAttributes | SFXXMLElement::RemoveAttribute | SFXXMLElement::RemoveAttributeNode
[ public, virtual, const ] Bool HasChildNodes(Void);
[ public, virtual ] SFCError InsertBefore( SFXXMLNodeConstPtr newchild // 挿入するノード SFXXMLNodeConstPtr refchild // 参照ノード、このノードの直前に挿入される );
newchild ノードを refchild ノードの直前に挿入します。 refchild 引数が null で指定された場合、子ノードの末尾に newchild ノードを挿入します。
newchild ノードが DocumentFragment ノードの場合、その子ノードのすべてを元の順番どおりに、refchild ノードの直前に挿入します。
newchild ノードが既に DOM ツリー内に存在する場合は、最初にその子ノードを削除します。
// Element ノードを作成する SFXXMLElementPtr isbn = document.CreateElement("ISBN"); // Element ノードに Text ノードを追加する isbn->AppendChild(SFXXMLNodePtr(document.CreateTextNode("4-7741-1616-5"))); // Element ノードを追加する book->InsertBefore(SFXXMLNodePtr(isbn), book->GetFirstChild());
[ public ] Void RemoveAttribute( SFXAnsiStringConstRef name // 属性の名前 );
指定した名前の属性が存在しない場合、属性は削除されません。
![]() |
注意 |
|---|---|
| 属性の名前として修飾名(名前空間接頭辞とローカル名の対)も使えます。 | |
// "dt:dt" という名前の属性を削除する
book->RemoveAttribute("dt:dt");
SFXXMLElement::GetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::GetAttributeNode | SFXXMLElement::SetAttribute | SFXXMLElement::RemoveAttributeNode
[ public ] SFXXMLAttributePtr RemoveAttributeNode( SFXXMLAttributePtr oldAttr // 削除する Attrubite ノード );
削除された Attrubite ノード ( SFXXMLAttribute ) を返します。
// "dt:dt" という Attrubite ノードを取得する SFXXMLAttributePtr atti = book->GetAttributeNode("dt:dt"); // 取得した Attrubite ノードを Element ノードから削除する book->RemoveAttributeNode(atti); // Attrubite ノードを削除する delete atti;
SFXXMLAttribute | SFXXMLElement::GetAttribute | SFXXMLElement::SetAttributeNode | SFXXMLElement::GetAttributeNode | SFXXMLElement::SetAttribute | SFXXMLElement::RemoveAttribute
[ public, virtual ] SFCError RemoveChild( SFXXMLNodeConstPtr oldchild // 削除する子ノード );
[ public, virtual ] SFCError ReplaceChild( SFXXMLNodeConstPtr newchild // 置換後ノード SFXXMLNodeConstPtr oldchild // 置換前ノード );
// name ノードを作成する SFXXMLElementPtr name = document.CreateElement("NAME"); // テキストを作成し、name ノードに追加する name->AppendChild(SFXXMLNodePtr(document.CreateTextNode("Cosmos"))); // book ノードの最初の子ノードを name ノードで置換する book->ReplaceChild(name, book->GetFirstChild());
[ public ] Void SetAttribute( SFXAnsiStringConstRef name // 属性の名前 ACharConstPtr value // 設定する値 );
同じ名前の属性が存在する場合は、その属性値は引数で指定した値に変更されます。
![]() |
注意 |
|---|---|
| 属性の名前として修飾名(名前空間接頭辞とローカル名の対)も使えます。 | |
![]() |
エンティティ参照を含む属性値を設定する方法 |
|---|---|
任意の Text ノード(SFXXMLText) と EntityReference ノード(SFXXMLEntityReference) を子ノードに持つ Attribute ノード(SFXXMLAttribute) を SFXXMLElement::SetAttributeNode 関数の引数にします。 | |
SFXXMLElement::SetAttributeNode | SFXXMLElement::GetAttribute | SFXXMLElement::GetAttributeNode | SFXXMLElement::HasAttribute | SFXXMLElement::HasAttributes | SFXXMLElement::RemoveAttribute | SFXXMLElement::RemoveAttributeNode
[ public ] SFCError SetAttributeNode( SFXXMLAttributePtr newAttr // Attribute ノード );
同じ名前の Attribute ノードが存在する場合、既存の Attribute ノードは削除され、引数で指定した Attribute ノードに置き換えられます。
// "isdn" という名前で Attribute ノードを作成する ( 属性値: "4-7741-1616-5" ) SFXXMLAttributePtr atti = document.CreateAttribute("isdn","4-7741-1616-5"); // Element ノード(book)の内に Attribute ノードを追加する book->SetAttributeNode(atti);
|
Copyright (C) 2002 - 2008 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|