XML操作DOM関数2
- DOMElement::__construct〔新しい DOMElement オブジェクトを作成する〕
- DOMElement::getAttribute〔属性の値を返す〕
- DOMElement::getAttributeNode〔属性ノードを返す〕
- DOMElement::getAttributeNodeNS〔属性ノードを返す〕
- DOMElement::getAttributeNS〔属性の値を返す〕
- DOMElement::getElementsByTagName〔タグ名から要素を取得する〕
- DOMElement::getElementsByTagNameNS〔名前空間 URI とローカル名から要素を取得する〕
- DOMElement::hasAttribute〔属性が存在するかどうかを調べる〕
- DOMElement::hasAttributeNS〔属性が存在するかどうかを調べる〕
- DOMElement::removeAttribute〔属性を削除する〕
- DOMElement::removeAttributeNode〔属性を削除する〕
- DOMElement::removeAttributeNS〔属性を削除する〕
- DOMElement::setAttribute〔新しい属性を追加する〕
- DOMElement::setAttributeNode〔新しい属性ノードを要素に追加する〕
- DOMElement::setAttributeNodeNS〔新しい属性ノードを要素に追加する〕
- DOMElement::setAttributeNS〔新しい属性を追加する〕
- DOMElement::setIdAttribute〔ID 型の属性を名前で宣言する〕
- DOMElement::setIdAttributeNode〔ID 型の属性をノードで宣言する〕
- DOMElement::setIdAttributeNS〔ID 型の属性をローカル名および名前空間 URI で宣言する〕
- DOMEntityReference::__construct〔新しいDOMEntityReferenceオブジェクトを作成する〕
- DOMImplementation::__construct〔新しい DOMImplementation オブジェクトを作成する〕
- DOMImplementation::createDocument〔指定した型とドキュメント要素の DOMDocument オブジェクトを作成する〕
- DOMImplementation::createDocumentType〔空の DOMDocumentType オブジェクトを作成する〕
- DOMImplementation::hasFeature〔DOM 実装が、指定した機能を実装しているかどうかを調べる〕
- DOMNamedNodeMap::getNamedItem〔名前で指定されたノードを取得する〕
- DOMNamedNodeMap::getNamedItemNS〔ローカル名および名前空間 URI で指定したノードを取得する〕
- DOMNamedNodeMap::item〔インデックスで指定したノードを取得する〕
- DOMNode::appendChild〔子要素群の最後に新しい子要素を追加する〕
- DOMNode::cloneNode〔ノードを複製する〕
- DOMNode::hasAttributes〔ノードが属性を保持しているかどうかを調べる〕
- DOMNode::hasChildNodes〔ノードが子を保持しているかどうかを調べる〕
- DOMNode::insertBefore〔参照しているノードの前に新しい子を追加する〕
- DOMNode::isDefaultNamespace〔指定した namespaceURI がデフォルトの名前空間かどうかを調べる〕
- DOMNode::isSameNode〔2 つのノードが等しいかどうかを調べる〕
- DOMNode::isSupported〔指定したバージョンで機能がサポートされているかどうかを調べる〕
- DOMNode::lookupNamespaceURI〔プレフィックスに基づいて、ノードの名前空間 URI を取得する〕
- DOMNode::lookupPrefix〔名前空間 URI に基づいて、ノードの名前空間プレフィックスを取得する〕
- DOMNode::normalize〔ノードを正規化する〕
- DOMNode::removeChild〔子要素群から子要素を削除する〕
- DOMNode::replaceChild〔子を置き換える〕
DOMElement::__construct
新しい DOMElement オブジェクトを作成する
unknown
新しいDOMDocumenntオブジェクトを作成します。
第1引数バージョンには、XML宣言の一部であるドキュメントのバージョン番号を指定します。
第2引数エンコーディングには、XML宣言の一部であるドキュメントのエンコーディングを指定します。
<?
# 新しい DOMDocument を作成する
$dom = new DOMDocument('1.0', 'utf-8');
echo $dom->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
*/
?>
DOMElement::getAttribute
属性の値を返す
unknown
DOMAttrクラスの新しいインスタンスを作成して返します。 このノードは例えば、DOMNode->appendChild()などを使用して挿入されない限りドキュメント内には現れません。 エラーが発生した場合はFALSEを返します。 属性名に無効な文字列が含まれている場合は、DOM_INVALID_CHARACTER_ERRが発生します。
<?
$doc = new DOMDocument('1.0', 'utf-8');
$doc->preserveWhiteSpace = false;
$doc->formatOutput = true;
$root = $doc->createElement('books');
$doc->appendChild($root);
for($i=0;$i<5;$i++){
$root_child = $doc->createElement('book');
$root->appendChild($root_child);
$root_attr1 = $doc->createAttribute('url');
$root_child->appendChild($root_attr1);
$root_text = $doc->createTextNode('This is the root element!');
$root_attr1->appendChild($root_text);
$root_attr2= $doc->createAttribute('artist');
$root_child->appendChild($root_attr2);
$root_text = $doc->createTextNode('This is the root element!');
$root_attr2->appendChild($root_text);
$root_attr3 = $doc->createAttribute('track');
$root_child->appendChild($root_attr3);
$root_text = $doc->createTextNode('This is the root element!');
$root_attr3->appendChild($root_text);
}
print $doc->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<books>
<book url="This is the root element!" artist="This is the root element!" track="This is the root element!"/>
<book url="This is the root element!" artist="This is the root element!" track="This is the root element!"/>
<book url="This is the root element!" artist="This is the root element!" track="This is the root element!"/>
<book url="This is the root element!" artist="This is the root element!" track="This is the root element!"/>
<book url="This is the root element!" artist="This is the root element!" track="This is the root element!"/>
</books>
*/
?>
DOMElement::getAttributeNode
属性ノードを返す
unknown
関連付けられた名前空間に、DOMAttrクラスの新しいインスタンスを作成して返します。 このノードは例えば、DOMNode->appendChild()などを使用して挿入されない限りドキュメント内には現れません。
第2引数 qualifiedNameには、属性のタグ名とプレフィックスを「prefix:tagname」形式で指定します。
エラーが発生した場合はFALSEを返します。 qualifiedNameが無効な文字列が含まれている場合は、 DOM_INVALID_CHARACTER_ERRが発生します。 qualifiedNameが不正な形式、あるいはqualifiedNameがプレフィックスを含んでるにもかかわらず、名前空間URIがNULLである場合に発生します。
DOMElement::getAttributeNodeNS
属性ノードを返す
unknown
現在のノードの名前空間URIにおけるローカル名という名前の属性ノードを取得して返します。
DOMElement::getAttributeNS
属性の値を返す
unknown
現在のノードから名前空間URIにおけるローカル名という名前の属性の値を取得して返します。 ローカル名および名前空間URIに対応する属性が見つからなかった場合は空文字列を返します。
DOMElement::getElementsByTagName
タグ名から要素を取得する
unknown
指定したタグ名を持つすべての子孫要素からなるDOMNodeListクラスの新しいインスタンスを返します。 各要素はツリー内の検索時に見つかった順で並べられます。
ツリー内すべての要素を返すには、第2引数ローカル名に「*」を指定します。
DOMElement::getElementsByTagNameNS
名前空間 URI とローカル名から要素を取得する
unknown
指定したローカル名および名前空間URIのタグを持つすべての子孫要素を取得します。 返り値として、マッチしたすべての要素からなるDOMNodeListクラスのインスタンスを返します。 各要素はツリー内の検索時に見つかった順で並べられます。
ツリー内すべての要素を返すには、第2引数ローカル名に「*」を指定します。
DOMElement::hasAttribute
属性が存在するかどうかを調べる
unknown
指定した要素名に属性が存在するかどうかを示します。 存在する場合にTRUE、存在しない場合にFALSEを返します。
DOMElement::hasAttributeNS
属性が存在するかどうかを調べる
unknown
要素のメンバーとしてローカル名という名前の属性が名前空間URIに存在するかどうかを調べます。 存在する場合にTRUE、存在しない場合にFALSEを返します。
<?
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns="testns" attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS('testns', 'attr')); // bool(false)
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns:ns1="testns" ns1:attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS('testns', 'attr')); // bool(true)
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns="testns" attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS(NULL, 'attr')); // bool(true)
$dom = new DOMDocument();
$dom->loadXML('<?xml version="1.0"?><element xmlns="testns" attr="testval" />');
var_dump($dom->documentElement->hasAttributeNS(is_null($dom->documentElement->lookupPrefix('testns')) ? NULL : 'testns', 'attr')); // bool(true)
?>
DOMElement::removeAttribute
属性を削除する
unknown
名前という名前の属性を要素から削除します。 成功した場合にTRUE、失敗した場合にFALSEを返します。 ノードが読み込み専用の場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
DOMElement::removeAttributeNode
属性を削除する
unknown
oldnodeに指定した属性ノードを要素から削除します。 成功した場合にTRUE、失敗した場合にFALSEを返します。 ノードが読み込み専用の場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。 oldnodeが要素の属性でない場合に DOM_NOT_FOUND_ERRORが発生します。
DOMElement::removeAttributeNS
属性を削除する
unknown
名前空間URIにあるローカル名という名前の属性を要素から削除します。 成功した場合にTRUE、失敗した場合にFALSEを返します。 ノードが読み込み専用の場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
<?
$dom = DOMDocument::loadXML('<foo:root xmlns:foo="http:bar"/>');
$element = $dom->childNodes->item(0);
echo (int) $element->hasAttributeNS('http:bar', 'foo'); // 0
$element->removeAttributeNS('http:bar', 'foo');
echo htmlentities($dom->saveXML());
/*
<?xml version="1.0"?> <root/>
*/
?>
DOMElement::setAttribute
新しい属性を追加する
unknown
名前という属性名に、指定した値を設定します。 属性が存在しない場合は作成されます。 返り値として新しいDOMAttrを返します。 エラーが発生した場合はFALSEを返します。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
第1引数名前には、属性の名前を指定します。
第2引数値には属性の値を指定します。
<?
$doc = new DOMDocument('1.0', 'utf-8');
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);
$newnode->setAttribute("align", "left");
print $doc->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<para align="left"/>
*/
?>
DOMElement::setAttributeNode
新しい属性ノードを要素に追加する
unknown
新しい属性ノードを要素に追加します。 属性ノードが置換された場合は、返り値として置換前のノードを返します。 そうでない場合は、NULLを返します。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
<?
$dom = new DOMDocument('1.0', 'utf-8');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$ht_ml = $dom->appendChild($dom->createElement('html'));
$he_ad = $ht_ml->appendChild($dom->createElement('head'));
$tit_le= $he_ad->appendChild($dom->createElement('title'));
$tit_le->appendChild($dom->createTextNode('DOMAttr test'));
$me_ta = $he_ad->appendChild(new DOMElement('meta'));
$me_ta->setAttributeNode(new DOMAttr('name', 'Description'));
$me_ta->setAttributeNode(new DOMAttr('content', 'example'));
$me_ta = $he_ad->appendChild(new DOMElement('meta'));
$me_ta->setAttributeNode(new DOMAttr('name', 'Author'));
$me_ta->setAttributeNode(new DOMAttr('content', 'karvjorm'));
print $dom->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<html>
<head>
<title>DOMAttr test</title>
<meta name="Description" content="example"/>
<meta name="Author" content="karvjorm"/>
</head>
</html>
*/
?>
DOMElement::setAttributeNodeNS
新しい属性ノードを要素に追加する
unknown
新しい属性ノードを要素に追加します。
属性ノードが置換された場合は、返り値として置換前のノードを返します。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
DOMElement::setAttributeNS
新しい属性を追加する
unknown
名前空間URIにあるqualifiedNameという名前の属性を、指定した値に設定します。 属性が存在しない場合は、作成されます。 返り値はありません。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。 qualifiedNameが不正な形式だったり、qualifiedNameがprefixを含むにも関わらず名前空間URIがNULLの場合にDOM_NAMESPACE_ERRが発生します。
第2引数qualifiedNameには、属性の名前を「prefix:tagname」形式で指定します。
第2引数値には、属性の値を指定します。
DOMElement::setIdAttribute
ID 型の属性を名前で宣言する
unknown
ID型となる属性を名前で宣言します。 返り値はありません。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。 名前がこの要素の属性でない場合にDOM_NOT_FOUNDが発生します。
第1引数名前には、属性の名前を指定します。
第2引数isIDには、ローカル名をID型にしたい場合にTRUE、そうでない場合はFALSEを指定します。
DOMElement::setIdAttributeNode
ID 型の属性をノードで宣言する
unknown
ID型となる属性を指定します。 返り値はありません。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。 属性がこの要素の属性でない場合にDOM_NOT_FOUNDが発生します。
第1引数属性には、属性ノードを指定します。
第2引数isIDには、ローカル名をID型にしたい場合にTRUE、そうでない場合はFALSEを指定します。
DOMElement::setIdAttributeNS
ID 型の属性をローカル名および名前空間 URI で宣言する
unknown
ID型となる属性をローカル名および名前空間URIで宣言します。 返り値はありません。
ノードが読み込み専用である場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。 ローカル名がこの要素の属性でない場合にDOM_NOT_FOUNDが発生します。
第1引数名前空間URIには、属性の名前空間URIを指定します。
第2引数ローカル名には、属性のローカル名を「prefix:tagname」形式で指定します。
第3引数isIDには、ローカル名をID型にしたい場合にTRUE、そうでない場合はFALSEを指定します。
DOMEntityReference::__construct
新しいDOMEntityReferenceオブジェクトを作成する
unknown
新しいDOMEntityReferenceオブジェクトを作成します。
<?
# 新しい DOMEntityReference を作成する
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->appendChild(new DOMElement('root'));
$entity = $element->appendChild(new DOMEntityReference('nbsp'));
echo $dom->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<root> </root>
*/
?>
DOMImplementation::__construct
新しい DOMImplementation オブジェクトを作成する
unknown
新しいDOMImplementationオブジェクトを作成します。
DOMImplementation::createDocument
指定した型とドキュメント要素の DOMDocument オブジェクトを作成する
unknown
指定したdoctypeとドキュメント要素のDOMDocumentオブジェクトを作成して返します。 名前空間URI、qualifiedName、doctypeがNULLの場合は、ドキュメント要素を含まない空のDOMDocumentを返します。
doctypeが既に別のドキュメントで使用されていたり、別の実装で作成されている場合にDOM_WRONG_DOCUMENT_ERRが発生します。 名前空間URIおよびqualifiedNameで指定した名前空間に間違いがある場合にDOM_NAMESPACE_ERRが発生します。
オプションの第1引数名前空間URIには、作成するドキュメント要素の名前空間URIを指定します。
オプションの第2引数qualifiedNameには、作成するドキュメント要素の修飾名を指定します。
オプションの第3引数doctypeには、作成するドキュメントの型、あるいはNULLを指定します。
DOMImplementation::createDocumentType
空の DOMDocumentType オブジェクトを作成する
unknown
空のDOMDocumentTypeオブジェクトを作成します。 エンティティ宣言および記述は使用できません。 エンティティ参照の展開やデフォルト属性の追加は発生しません。
返り値として、ownerDocumentをNULLに設定した新しいDOMDocumentTypeノードを返します。 qualifiedNameで指定した名前空間に間違いがある場合はDOM_NAMESPACE_ERRが発生します。
オプションの第1引数qualifiedNameには、作成されるドキュメント型の修飾名を指定します。
オプションの第2引数publicIDには、外部サブセットの公開IDを指定します。
オプションの第3引数systemIDには、外部サブセットのシステムIDを指定します。
<?
###### DTD を添付してドキュメントを作成する
# DOMImplementation クラスのインスタンスを作成する
$imp = new DOMImplementation;
# DOMDocumentType のインスタンスを作成する
$dtd = $imp->createDocumentType('graph', '', 'graph.dtd');
# DOMDocument のインスタンスを作成する
$dom = $imp->createDocument("", "", $dtd);
# その他のプロパティを設定する
$dom->encoding = 'UTF-8';
$dom->standalone = false;
# 空の要素を作成する
$element = $dom->createElement('graph');
# 要素を追加する
$dom->appendChild($element);
# ドキュメントの内容を出力する
echo $dom->saveXML();
/*
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE graph SYSTEM "graph.dtd">
<graph/>
*/
?>
DOMImplementation::hasFeature
DOM 実装が、指定した機能を実装しているかどうかを調べる
unknown
featureに指定した機能をDOMが実装しているかどうかを調べます。
成功した場合にTRUE、失敗した場合にFALSEを返します。
すべての機能の一覧は、DOM仕様の「Conformance」を参照してください。
第1引数featureには、調べる機能を指定します。
第2引数versionには、調べる機能のバージョン番号を指定します。
DOM level 2では、「2.0」または「1.0」のいずれかになります。
<?
###### DOM Implementationを調べる
$features = array(
'Core' => 'Core module',
'XML' => 'XML module',
'HTML' => 'HTML module',
'Views' => 'Views module',
'Stylesheets' => 'Style Sheets module',
'CSS' => 'CSS module',
'CSS2' => 'CSS2 module',
'Events' => 'Events module',
'UIEvents' => 'User interface Events module',
'MouseEvents' => 'Mouse Events module',
'MutationEvents' => 'Mutation Events module',
'HTMLEvents' => 'HTML Events module',
'Range' => 'Range module',
'Traversal' => 'Traversal module'
);
foreach($features as $key=>$name){
if(DOMImplementation::hasFeature($key, '2.0')){
echo "$name の機能を保持しています\n";
}else{
echo "$name の機能は保持していません\n";
}
}
?>
DOMNamedNodeMap::getNamedItem
名前で指定されたノードを取得する
unknown
ノード名に指定したノードを返します。 ノードが見つからなかった場合はNULLを返します。
<?
$xml=<<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<racine version="2.0a">
<article/>
</racine>
EOD;
$dom = new DOMDocument;
# 上で定義した XML 文字列を読み込む
$dom->loadXML($xml);
echo $dom->documentElement->attributes->getNamedItem("version")->nodeValue;
// 2.0a
?>
DOMNamedNodeMap::getNamedItemNS
ローカル名および名前空間 URI で指定したノードを取得する
unknown
ローカル名および名前空間URIで指定したノードを返します。 ノードが見つからなかった場合はNULLを返します。
第1引数名前空間URIには、取得するノードの名前空間URIを指定します。
第2引数ローカル名には、取得するノードのローカル名を指定します。
DOMNamedNodeMap::item
インデックスで指定したノードを取得する
unknown
マップ内のインデックス番目の位置にあるノードを返します。 インデックスが不正な形式(マップ内の要素数以上)の場合はNULLを返します。
第1引数インデックスには、マップ内のインデックス番号を指定します。
DOMNode::appendChild
子要素群の最後に新しい子要素を追加する
unknown
既存の子ノードリストに新しい子ノードを追加、あるいは新しい子ノードリストを作成して返します 子ノードの作成には、DOMDocument::createElement、DOMDocument::createTextNodeなどを使用するか、単に別のノードを使用します。
ノードが読み込み専用であったり、挿入するノードの以前の親が読み込み専用であったりした場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
新しいノードで指定した型の子ノードを保持することが許可されていない場合、あるいは追加しようとしているノードが自分自身やその先祖であった場合にDOM_HIERARCHY_REQUEST_ERRが発生します。
新しいノードがこのノードとは別のドキュメントで作成されたものである場合にDOM_WRONG_DOCUMENT_ERRが発生します。
第1引数新しいノードには、追加する子ノードを指定します。
<?
# 新しいドキュメントに子ノードを追加する
$doc = new DOMDocument;
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);
echo $doc->saveXML();
/*
<?xml version="1.0"?>
<para/>
*/
?>
DOMNode::cloneNode
ノードを複製する
unknown
ノードのコピーします。 返り値として、コピーされたノードを返します。
オプションの第1引数deepにTRUEを指定すると、子孫要素もコピーされます。 省略した場合はデフォルトのFALSE(子孫要素はコピーに含めない)が適用されます。
<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8" ?>
<book type="paperback">
<title name='MAP'>Red Nails</title>
<price>$12.99</price>
<author>
<name first="Robert" middle="E" last="Howard"/>
<birthdate>9/21/1977</birthdate>
</author>
<author>
<name first="Arthur" middle="Mc" last="Kayn"/>
</author>
</book>
*/
###### ノードのコピー
$file = 'book.xml';
$doc = new domDocument;
if (file_exists($file)) {
$doc->load($file);
} else {
exit('Erreur !.');
}
$xpath = new domXPath($doc);
$query = "//author/*";
$xpathQuery = $xpath->query($query);
$size = $xpathQuery->length;
for ($i=0; $i<$size; $i++){
$node = $xpathQuery->item($i);
if ($node->nodeName == 'birthdate' && $node->hasChildNodes() && $node->firstChild->textContent != ''){
$clonenode = $node->cloneNode(true);
$refnode = $node;
}
}
for ($i=0; $i<$size; $i++){
$node = $xpathQuery->item($i);
if (!$node->isSameNode($refnode)){
$newnode = $node->appendChild($clonenode);
}
}
print $doc->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<book type="paperback">
<title name="MAP">Red Nails</title>
<price>$12.99</price>
<author>
<name first="Robert" middle="E" last="Howard"/>
<birthdate>9/21/1977</birthdate>
</author>
<author>
<name first="Arthur" middle="Mc" last="Kayn"><birthdate>9/21/1977</birthdate></name>
</author>
</book>
*/
?>
DOMNode::hasAttributes
ノードが属性を保持しているかどうかを調べる
unknown
ノードが属性を保持しているかどうかを調べ、保持している場合にTRUE、そうでない場合にFALSEを返します。 調べるノードは、XML_ELEMENT_NODEである必要があります。
DOMNode::hasChildNodes
ノードが子を保持しているかどうかを調べる
unknown
ノードが子を保持しているかどうかを調調べ、保持している場合にTRUE、そうでない場合にFALSEを返します。
<?
$doc = new DOMDocument;
$node = $doc->createElement("FirstMain", "First Main Node. This have child");
$doc->appendChild($node);
$childnode = $doc->createElement("childnode", "child node");
$node->appendChild($childnode);
$secondnode = $doc->createElement("SecondMain", "First Main Node. This don't have child");
$doc->appendChild($secondnode);
$doc->saveXML();
$nodeElmt = $doc->getElementsByTagName("FirstMain");
foreach($nodeElmt as $nodeElmt){
if($nodeElmt->hasChildNodes()){
echo "This node has childnodes";
}else{
echo "This node has no childnodes";
}
}
// This node has childnodes
?>
DOMNode::insertBefore
参照しているノードの前に新しい子を追加する
unknown
参照しているノードの直前に新しいノードを挿入し、挿入されたノードを返します。 追加するノードに対して変更を加えたい場合は、この関数の返り値を使用してください。
挿入されるノードが読み込み専用であったり、挿入されるノードの以前の親が読み込み専用であった場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
新しいノードで指定した型の子ノードを保持することが許可されていない、あるいは追加しようとしているノードが自分自身やその祖先であった場合にDOM_HIERARCHY_REQUEST_ERRが発生します。
新しいノードが、挿入されるノードとは別のドキュメントで作成されたものである場合にDOM_WRONG_DOCUMENT_ERRが発生します。
参照しているノードが挿入されるノードの子ではない場合にDOM_NOT_FOUNDが発生します。
オプションの第2引数参照しているノードを省略すると、新しいノードが子要素として追加されます。
<?
// load XML, create XPath object
$xml = new DomDocument();
$xml->preserveWhitespace = false;
$xml->load('contact/xml/contact.xml');
$xpath = new DOMXPath($xml);
// get node eva, which we will append to
$eva = $xpath->query('/contacts/person[.="Eva"]')->item(0);
// create node john
$john = $xml->createElement('person', 'John');
// insert john after eva
// "in eva's parent node (=contacts) insert
// john before eva's next node"
// this also works if eva would be the last node
$eva->parentNode->insertBefore($john, $eva->nextSibling);
// show result
header('Content-Type: text/plain');
print $xml->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<contacts>
<person>Adam</person>
<person>Eva</person><person>John</person>
<person>Thomas</person>
</contacts>
*/
?>
DOMNode::isDefaultNamespace
指定した namespaceURI がデフォルトの名前空間かどうかを調べる
unknown
名前空間URIがデフォルトの名前空間である場合にTRUE、それ以外の場合にFALSEを返します。
DOMNode::isSameNode
2 つのノードが等しいかどうかを調べる
unknown
2つのノードが等しいかどうかを調べます。 等しい場合にTRUE、そうでない場合にFALSEを返します。 ノードの内容に基づいて比較されるわけではありません。
DOMNode::isSupported
指定したバージョンで機能がサポートされているかどうかを調べる
unknown
versionに指定したバージョンで、featureに指定した機能がサポートされているかどうかを調べます。 サポートされている場合にTRUE、そうでない場合にFALSEを返します。
第1引数featureには、調べる機能を指定します。 調べる機能の一覧は、DOMImplementation::hasFeatureを参照してください。
第2引数versionには、調べる機能のバージョン番号を指定します。
DOMNode::lookupNamespaceURI
プレフィックスに基づいて、ノードの名前空間 URI を取得する
unknown
prefixに指定した名前空間のプレフィックスに基づいて、ノードの名前空間URIを返します。
<?
# デフォルトの名前空間URIを取得
$xml_file="book.xml";
$doc = new DOMDocument();
$doc->load($xml_file);
$uri = $doc->documentElement->lookupnamespaceURI(NULL);
?>
DOMNode::lookupPrefix
名前空間 URI に基づいて、ノードの名前空間プレフィックスを取得する
unknown
名前空間URIに基づく、ノードの名前空間プレフィックスを返します。
DOMNode::normalize
ノードを正規化する
unknown
ノードを正規化します。 返り値はありません。
DOMNode::removeChild
子要素群から子要素を削除する
unknown
子要素群から子要素を削除します。 成功した場合は、削除し要素を返します。
ノードが読み込み専用の場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
子要素がこのノードの子要素でない場合にDOM_NOT_FOUNDが発生します。
第1引数子要素には、削除する子要素を指定します。
<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連のおすすめ書籍">
<book date="20081031" price="1995">まるごとPHP! Vol.2</book>
<book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
<book date="20080618" price="2604" >CakePHP ポケットリファレンス</book>
<book date="20080526" price="3570">初めてのPHP & MySQL 第2版</book>
<book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/
$doc = new DOMDocument;
$doc->load('/content/demo/book.xml');
$books = $doc->documentElement;
// book を取得し、それを books から削除します
$book = $books->getElementsByTagName('book')->item(0);
$oldbook = $books->removeChild($book);
echo $doc->saveXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連のおすすめ書籍">
<book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
<book date="20080618" price="2604">CakePHP ポケットリファレンス</book>
<book date="20080526" price="3570">初めてのPHP & MySQL 第2版</book>
<book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/
?>
DOMNode::replaceChild
子を置き換える
unknown
古いノードにしていした子要素を新しいノードに置換します。 新しいノードが既に子要素にあった場合は追加されません。 置換に成功すると、古いノードを返します。 エラーが発生した場合は、FALSEを返します。
このノードが読み込み専用であったり、挿入されるノードの以前の親が読み込み専用であった場合にDOM_NO_MODIFICATION_ALLOWED_ERRが発生します。
新しいノードで指定した型の子ノードを保持することが許可されていない場合、あるいは追加しようとしているノードが自分自身やその祖先であった場合にDOM_HIERARCHY_REQUEST_ERRが発生します。
新しいノードがこのノードとは別のドキュメントで作成されたものである場合にDOM_WRONG_DOCUMENT_ERRが発生します。
古いノードがこのノードの子でない場合にDOM_NOT_FOUNDが発生します。
第1引数新しいノードは、対象ドキュメントのメンバ、つまりDOMDocument->createXXX()メソッドのひとつで追加されたかDOMDocument::importNodeでドキュメントにインポートされたものである必要があります。