DOM ドキュメント オブジェクト モデル
DOMElementdom_import_simplexml (SimpleXMLElement) —$node
より
SimpleXMLElement オブジェクトから DOM 要素を取得します
}
事前定義された定数
次の定数は、この拡張機能によって定義されており、この拡張機能が PHP にコンパイルされるか、実行時に動的にロードされる場合にのみ使用できます。
XML 定数 定数 値 説明
XML_ELEMENT_NODE (整数) 1 ノードは DOMElement です
XML_ATTRIBUTE_NODE (整数) 2 ノードは DOMAttr
XML_TEXT_NODE (整数) 3 ノードは DOMText です
XML_CDATA_SECTION_NODE (整数) 4 ノードは DOMCharacterData です
XML_ENTITY_REF_NODE (整数) ) 5 ノードは DOMEntityReference です
XML_ENTITY_NODE (整数) 6 ノードは DOMEntity です
XML_PI_NODE (整数) 7 ノードは DOMProcessingstruct です
XML_COMMENT_NODE (整数) 8 ノードは DOMComment です
XML_DOCUMENT_NODE (整数) 9 ノードは DOMDocument です
XML_DOCUMENT_TYPE_NODE (整数) ) 10 ノードは DOMDocumentType です
XML_DOCUMENT_FRAG_NODE (整数) 11 ノードは DOMDocumentFragment です
XML_NOTATION_NODE (整数) 12 ノードは DOMNotation です
XML_HTML_DOCUMENT_NO DE (整数) 13
XML_DTD_NODE (整数) 14
XML_ELEMENT_DECL_NODE (整数) 15
XML_ATTRIBUTE_DECL_NODE (整数) 16 ️ ger) 2
XML_ATTRIBUTE_IDREF (整数) 3
XML_ATTRIBUTE_IDREFS (整数) 4
XML_ATTRIBUTE_ENTITY (整数) 5
XML_ ATTRIBUTE_NMTOKEN (整数) 7
XML_ATTRIBUTE_NMTOKENS (整数) 8
XML_ATTRIBUTE_ENUMERATION (整数) 9
XML_ATTRIBUTE_NOTATION (整数) 10
DOMException 定数 定数 値 説明
D OM_PHP_ERR (整数) 0 DOM 仕様の一部ではないエラー コード。 PHP エラー用です。
DOM_INDEX_SIZE_ERR (整数) 1 インデックスまたはサイズが負の場合、または許可された値より大きい場合。
DOMSTRING_SIZE_ERR (整数) 2 指定されたテキスト範囲が DOMString に収まらない場合。 R (整数) 3ノードが属さない場所に挿入された場合
DOM_WRONG_DOCUMENT_ERR (整数) 4 ノードがそのノードを作成したドキュメントとは異なるドキュメントで使用されている場合
DOM_INVALID_CHARACTER_ERR (整数) 5 無効な文字が指定された場合
DOM_NO_DATA_ALLOWED_ERR (整数) 6 データをサポートしていないノードにデータが指定されている場合。
DOM_NO_MODIFICATION_ALLOWED_ERR (整数) 7 変更が許可されていないオブジェクトを変更しようとした場合。 _ERR (整数) 8存在しないコンテキストでノードを参照しようとした場合。
DOM_NOT_SUPPORTED_ERR (整数) 9 要求されたタイプのオブジェクトまたは操作を実装がサポートしていない場合。
DOM_INUSE_ATTRIBUTE_ERR (整数) 10すでに他の場所で使用されている属性を追加します。
DOM_INVALID_STATE_ERR (整数) 11 使用できないオブジェクト、または使用できなくなったオブジェクトを使用しようとした場合。
DOM_SYNTAX_ERR (整数) 12 無効または不正な文字列が指定された場合。
DOM_INVALID_MODIFICATION_ERR (整数) 3 試みられた場合基礎となるオブジェクトのタイプを変更するために行われた場合。
DOM_NAMESPACE_ERR (整数) 14 名前空間に関して誤った方法でオブジェクトを作成または変更しようとした場合。
DOM_INVALID_ACCESS_ERR (整数) 15 パラメータまたは操作の場合は基になるオブジェクトではサポートされていません。
DOM_VALIDATION_ERR (整数) 16 insertBefore や RemoveChild などのメソッドの呼び出しによってノードが「部分的な有効性」に関して無効になる場合、この例外が発生し、操作は実行されません.
DOMNode {
/* プロパティ */
public readonly string $nodeName ; // 現在のノード タイプの最も正確な名前を返します
public string $nodeValue ; // タイプに応じたこのノードの値
public readonly int $nodeType ; //ノードのタイプを取得します。事前定義された XML_xxx_NODE 定数の 1 つ
public readonly DOMNode $parentNode ; //このノードの親
public readonly DOMNodeList $childNodes ; //このノードのすべての子を含む DOMNodeList。子が存在しない場合、
//これは空の DOMNodeList です。
public readonly DOMNode $firstChild ; //このノードの最初の子。そのようなノードがない場合は、NULL を返します。
public readonly DOMNode $lastChild ; //このノードの最後の子。そのようなノードがない場合は、NULL を返します。
public readonly DOMNode $previousSibling ; //このノードの直前のノード。そのようなノードがない場合は、NULL を返します。
public readonly DOMNode $nextSibling ; //このノードの直後のノード。そのようなノードがない場合は、NULL を返します。
public readonly DOMNamedNodeMap $attributes ; //このノードの属性を含む DOMNamedNodeMap (DOMElement の場合)
// そうでない場合は NULL。
public readonly DOMDocument $ownerDocument ; //このノードに関連付けられた DOMDocument オブジェクト。
public readonly string $namespaceURI ; //このノードの名前空間 URI、または指定されていない場合は NULL。
public string $prefix ; //このノードの名前空間プレフィックス、または指定されていない場合は NULL。
public readonly string $localName ; //このノードの修飾名のローカル部分を返します。
public readonly string $baseURI ; //このノードの絶対ベース URI、または実装ができなかった場合は NULL
//絶対 URI を取得します。
public readonly string $textContent ; //この属性は、このノードとその子孫のテキスト コンテンツを返します。
/* メソッド */
public DOMNode appendChild ( DOMNode $newnode ) 子の末尾に新しい子を追加します
public string C14N ([ bool $exclusive [ , bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) ノードを文字列に正規化します
public int C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] ) ノードをファイルに正規化します
public DOMNode cloneNode ([ bool $deep=False ] ) ノードのクローンを作成します
public int getLineNo ( void ) ノードの行番号を取得します
public string getNodePath ( void )を入手するノードの XPath
public bool hasAttributes ( void ) ノードに属性があるかどうかを確認します
public bool hasChildNodes ( void ) ノードに子があるかどうかを確認します
public DOMNode insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )参照前の新しい子node
public bool isDefaultNamespace ( string $namespaceURI ) 指定されたnamespaceURIがデフォルトの名前空間であるかどうかを確認します
public bool isSameNode ( DOMNode $node ) 2つのノードが同じであるかどうかを示します
public bo ol isSupported ( string $feature , string $version ) 指定されたバージョンで機能がサポートされているかどうかを確認します
public string lookupNamespaceURI ( string $prefix ) プレフィックスに基づいてノードの名前空間 URI を取得します
public string lookupPrefix ( string $namespaceURI )名前空間URI public public void remormize(void)ノードパブリックドムノードremoveChild(domnode $ oldnode)の子どものリストから子どもを削除します
public domnode cheplagechild(domnode $ newnode、domnode $ oldnode)は子供を交換します} * プロパティ */
readonly public int $length ; マップ内のノードの数。有効な子ノード インデックスの範囲は 0 から長さ - 1 です。
/* メソッド */
DOMNode getNamedItem ( string $name ) 名前で指定されたノードを取得します
DOMNode getNamedItemNS ( string $namespaceURI , string $localName ) ノードを取得しますローカル名と名前空間 URI で指定
DOMNode item ( int $index ) Index で指定されたノードを取得します
}
DOMNotation extends DOMNode {
/* プロパティ */
readonly public string $publicId ;
readonly public string $systemId ;
}
DOMNode MAttr は DOMElement オブジェクトの属性を表します。
DOMAttr extends DOMNode {
/* Attributes*/
public readonly string $name; //属性名
public readonly DOMElement $ownerElement; //現在、将来的には NULL として実装されます public string $value ; public bool isId ( void )
}
DOMNodeList は Traversable {
/* Properties*/
readonly public int $length ; リスト内のノードの数。有効な子ノードのインデックスは 0 から長さ - 1 までです。
/ * Method*/
DOMNode DOMNodelist::item ( int $index ) index で指定されたノードを取得します
}
DOMXPath {
/* Properties*/
public DOMDocument $ document ;
/* Method*/
public __construct ( DOMDocument $ doc )
publicmixedevaluate ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] ) 指定された XPath 式を評価し、次の場合に型指定された結果を返します。可能
public DOMNodeList query ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] ) 指定された XPath 式を評価します
public bool registerNamespace ( string $prefix , string $namespaceURI ) 名前空間を DOMXPath オブジェクトに登録します
public void registerPhpFunctions ([mixed $restrict ] ) PHP 関数を XPath 関数として登録します
}
DOMElement extends DOMNode {
/* プロパティ */
readonly public bool $schemaTypeInfo ; まだ実装されていません。常に NULL を返します
readonly public string $tagName ; 要素名
/* メソッド */
public __construct ( string $name [, string $value [, string $namespaceURI ]] ) 新しい DOMElement オブジェクトを作成します
public string getAttribute ( string $name )
public DOMAttr getAttributeNode ( string $ name )
public DOMAttr getAttributeNodeNS ( string $namespaceURI , string $localName )
public string getAttributeNS ( string $namespaceURI , string $localName )
public DOMNodeList getElementsByTagName ( string $name )
public DOMNodeList NS (文字列 $namespaceURI 、文字列 $localName ) Public Bool hasattribute(String $ name)
public bool hasattributens(string $ namespaceuri、string $ localName)
public bool removeattribute(string $ name)
public bool removeattributenode(domattr $ oldnode)
public bool removeattributens(sing $ paceuri、string、string $localName )
public DOMAttr setAttribute ( string $name , string $value )
public DOMAttr setAttributeNode ( DOMAttr $attr )
public DOMAttr setAttributeNodeNS ( DOMAttr $attr )
public void setAttributeNS ( string $namespaceURI , string $ qualifiedName 、文字列 $value )
public void setIdAttribute ( string $name , bool $isId )
public void setIdAttributeNode ( DOMAttr $attr , bool $isId )
public void setIdAttributeNS ( string $namespaceURI , string $localName , bool $isId )
}
DOMCharacterDataノードを表しますキャラクターデータ付き。このクラスに直接対応するノードはありませんが、他のノードはこのクラスから継承します。
DOMCharacterData extends DOMNode {
/* プロパティ */
public string $data ; ノードの内容。
readonly public int $length ; コンテンツの長さ。
/* メソッド */
void appendData ( string $data ) ノードの文字データの末尾に文字列を追加します
void deleteData ( int $offset , int $count ) 文字範囲を削除しますノードから
void insertData ( int $offset , string $data ) 指定された 16 ビット単位のオフセットに文字列を挿入します
void replaceData ( int $offset , int $count , string $data ) DOMCharacterData ノード内の部分文字列を置き換えます
string substringData ( int $offset , int $count ) ノードからデータの範囲を抽出します
}
DOMText DOMText クラスは DOMCharacterData を継承し、DOMElement または DOMAttr のテキスト コンテンツを表します。
DOMText extends DOMCharacterData {
/* プロパティ * /
readonly public string $wholeText ; 論理的に隣接する (要素、コメント、または処理命令で区切られていない) テキスト ノードのすべてのテキストを保持します。
/* メソッド */
public __construct ([ string $value ] ) 新しい DOMText オブジェクトを作成します
public bool isWhitespaceInElementContent ( void )このテキストノードにWhitespaceのPublic Domtext Splittext(int $ offset)が含まれているかどうかを示します。指定されたオフセットでこのノードを2つのノードに分割します} domcdatasection domcdatasectionは、domtextをdomtextから継承します。 * メソッド */
public __construct ( string $value )
}
DOMComment で区切られた文字であるコメント ノードを表します。
DOMComment extends DOMCharacterData {
/* メソッド */
public __construct ([ string $value ] )
}
DOMDocumentType 各 DOMDocument には doctype があります。値が NULL または DOMDocumentType オブジェクトである属性。
DOMDocumentType extends DOMNode {
/* プロパティ */
readonly public string $publicId ; 外部サブセットのパブリック識別子。
readonly public string $systemId ; 外部サブセットのシステム識別子。これは絶対 URI である場合もそうでない場合もあります。
readonly public string $name ; DTD の名前。つまり、DOCTYPE キーワードの直後に続く名前です。
readonly public DOMNamedNodeMap $entities ; DTD で宣言された、外部と内部の両方の一般的なエンティティを含む DOMNamedNodeMap。
readonly public DOMNamedNodeMap $notations ; DTD で宣言された表記法を含む DOMNamedNodeMap。
readonly public string $internalSubset ; 文字列としての内部サブセット、または存在しない場合は null。これには、区切り角括弧は含まれません。
}
DOMDocumentFragment extends DOMNode {
public bool appendXML ( string $data ) 生の XML データを追加します
}
DOMEntity このインターフェイスは、XML ドキュメント内の解析済みまたは解析されていない既知のエンティティを表します。
DOMEntity extends DOMNode {
/* プロパティ */
readonly public string $publicId ; 指定されている場合はエンティティに関連付けられたパブリック識別子、それ以外の場合は NULL です。
readonly public string $systemId ; エンティティに関連付けられたシステム識別子 (指定されている場合)、それ以外の場合は NULL。これは絶対 URI である場合もそうでない場合もあります。
readonly public string $notationName ; 解析されていないエンティティの場合、エンティティの表記法の名前。解析されたエンティティの場合、これは NULL です。
public string $actualEncoding ; 外部解析対象エンティティである場合に、解析時にこのエンティティに使用されるエンコーディングを指定する属性。内部サブセットのエンティティである場合、または不明な場合、これは NULL です。
readonly public string $encoding ; このエンティティが外部解析対象エンティティである場合、テキスト宣言の一部として、このエンティティのエンコーディングを指定する属性。それ以外の場合は NULL です。
readonly public string $version ; このエンティティが外部解析対象エンティティである場合、テキスト宣言の一部として、このエンティティのバージョン番号を指定する属性。それ以外の場合は NULL です。
}
DOMEntityReference extends DOMNode {
public __construct ( string $name )
}
Exception {
/* 属性*/
protected string $message ; 例外メッセージの内容
protected int $code ; 例外がスローされたファイル名
protected int $line ;
の行番号 /* Method*/
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
Final public string getMessage ( void ) 例外メッセージを取得します内容
final public Exception getPrevious ( void ) 例外チェーン内の前の例外を返します
Final public int getCode ( void ) 例外コードを取得します
Final public string getFile ( void ) 例外が発生したプログラム ファイルの名前を取得します
Final public int getLine ( void ) ファイル内の異常コードを取得
Final Public Array Gettrace(VOID)で異常追跡情報を取得 ING(VOID)は異常オブジェクトとなる 文字列に変換
Final private void __clone(void) Exception clone
}
DOMException DOM 操作は、特定の状況下、つまり論理的な理由で操作を実行できない場合に例外を発生させます。
DOMException extends Exception {
/* Properties*/
readonly public int $code 生成されたエラーのタイプを示す整数
}
DOMImplementation DOMImplementation インターフェイスは、ドキュメント オブジェクト モデルの特定のインスタンスに依存しない操作を実行するためのメソッドを多数提供します。
DOMImplementation {
/* Method */
__construct ( void )
public DOMDocument createDocument ([ string $namespaceURI = NULL [, string $qualifiedName = NULL [, DOMDocumentType $doctype = NULL ]]] ) ドキュメント要素を持つ指定されたタイプの DOMDocument オブジェクトを作成します
public DOMDocumentType createDocumentType ([ string $qualifiedName = NULL [, string $publicId = NULL) [, string $systemId = NULL ]]] ) 空の DOMDocumentType オブジェクトを作成します
public bool hasFeature ( string $feature , string $version ) DOM 実装が特定の機能を実装しているかどうかをテストします
}
DOMDocument extends DOMNode {
/* プロパティ */
readonly public string $actualEncoding ; 廃止されました。ドキュメントの実際のエンコーディングは、エンコーディングと同等の読み取り専用です。
readonly public DOMConfiguration $config ; 廃止されました。 DOMDocument::normalizeDocument() が呼び出されるときに使用される構成。
readonly public DOMDocumentType $doctype ; このドキュメントに関連付けられたドキュメント タイプ宣言。
readonly public DOMElement $documentElement ; これは、ドキュメントのドキュメント要素である子ノードへの直接アクセスを可能にする便利な属性です。
public string $documentURI ; ドキュメントの場所、または未定義の場合は NULL。
public string $encoding ; XML 宣言で指定されたドキュメントのエンコーディング。この属性は、最終的な DOM レベル 3 仕様には存在しませんが、この実装で XML ドキュメントのエンコーディングを操作する唯一の方法です。
public bool $formatOutput ; インデントと余分なスペースを使用して出力を適切にフォーマットします。
readonly public DOMImplementation $implementation ; このドキュメントを処理する DOMImplementation オブジェクト。
public bool $preserveWhiteSpace = true ; 余分な空白は削除しないでください。デフォルトは TRUE です。
public bool $recover ; 独自の。リカバリ モードを有効にします。つまり、整形式ではないドキュメントの解析を試みます。この属性は DOM 仕様の一部ではなく、libxml に固有です。
public bool $resolveExternals ; doctype 宣言から外部エンティティをロードするには、これを TRUE に設定します。これは、XML ドキュメントに文字エンティティを含める場合に便利です。
public bool $standalone ; 廃止されました。 XML 宣言で指定されているように、ドキュメントがスタンドアロンであるかどうかは、xmlStandalone.
public bool $strictErrorChecking = true に対応します。 エラーが発生した場合は DOMException をスローします。デフォルトは TRUE です。
public bool $substituteEntities ; 独自の。エンティティを置換するかどうか。この属性は DOM 仕様の一部ではなく、libxml に固有です。
public bool $validateOnParse = false ; DTD をロードして検証します。デフォルトは FALSE です。
public string $version ; 廃止されました。 XML のバージョン。xmlVersion.
readonly public string $xmlEncoding に対応します。 XML 宣言の一部として、このドキュメントのエンコーディングを指定する属性。指定されていない場合、またはドキュメントがメモリ内に作成されたときなど、不明な場合は NULL になります。
public bool $xmlStandalone ; XML 宣言の一部として、このドキュメントがスタンドアロンであるかどうかを指定する属性。指定されていない場合は FALSE です。
public string $xmlVersion ; XML 宣言の一部として、このドキュメントのバージョン番号を指定する属性。宣言がなく、このドキュメントが「XML」機能をサポートしている場合、値は「1.0」です。
/* メソッド */
public __construct ([ string $version [, string $encoding ]] )
public DOMAttr createAttribute (string $ name)
public domattr createattributens(string $ namespaceuri、string $ qualifiedName)関連する名前空間で新しい属性ノードを作成しますcome )
public DOMElement createElement ( string $name [, string $value ] )
public DOMElement createElementNS ( string $namespaceURI , string $qualifiedName [, string $value ] )
public DOMEntityReference createEntityReference ( string $name )
public DOMProcessingOrder createProcessingstruct ( string $target [, string $data ] )
public DOMText createTextNode ( string $content )
public DOMElement getElementById ( string $elementId ) 特定の ID を持つ要素を検索します
public DOMNodeList getElementsByTagName ( string $name ) 指定されたローカル タグ名を持つすべての要素を検索します
public DOMNodeList getElementsByTagNameNS ( string $namespaceURI , string $localName ) 指定された名前空間内の指定されたタグ名を持つすべての要素を検索します
public DOMNode importNode ( DOMNode $importedNode [ , bool $deep ] ) ノードを現在のドキュメントにインポートします
publicmixedload ( string $filename [, int $options = 0 ] ) ファイルからXMLをロードします
public boolloadHTML ( string $source [, int $options = 0 ] )文字列から HTML を読み込みます
public bool loadHTMLFile ( string $filename [, int $options = 0 ] ) ファイルから HTML を読み込みます
public mixedloadXML ( string $source [, int $options = 0 ] ) 文字列から XML を読み込みます
public voidnormalizeDocument ( void ) ドキュメントを正規化します
public bool registerNodeClass ( string $baseclass , string $extendedclass ) ベースノードタイプの作成に使用される拡張クラスを登録します
public bool RelaxNGValidate ( string $filename ) 実行ドキュメントの RelaxNG 検証
public bool RelaxNGValidateSource ( string $source ) ドキュメントに対して RelaxNG 検証を実行します
public int save ( string $filename [, int $options ] ) 内部 XML ツリーをファイルにダンプします
public string saveHTML ([ DOMNode $node = NULL ] ) HTML フォーマットを使用して内部ドキュメントを文字列にダンプします
public int saveHTMLFile ( string $filename ) HTML フォーマットを使用して内部ドキュメントをファイルにダンプします
public string saveXML ([ DOMNode $node [, int $options ]] ) 内部 XML ツリーをダンプして戻します文字列に変換
public bool schemaValidate ( string $filename [, int $flags ] ) スキーマに基づいてドキュメントを検証します
public bool schemaValidateSource ( string $source [, int $flags ] ) スキーマに基づいてドキュメントを検証します
public bool validate ( void ) DTD に基づいてドキュメントを検証します
public int xinclude ([ int $options ] ) DOMDocument オブジェクト内の Xinclude を置換します<?php
$url = 'http://movie.douban.com/category/' ;
function getPage($url)
{
$curl = curl_init();
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,";
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-us,en;q=0.5";
$header[] = "Pragma: "; // browsers keep this blank.
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, 'http://www.baidu.com');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$html = curl_exec($curl);
curl_close($curl);
return $html;
}
$text = getPage($url);
$xml = new DOMDocument();
$xml->loadHTMLFile("test.html");
$xml->encoding='UTF-8';
$xpath=new DOMXpath($xml);
$elements = $xpath->query("/html/body//div[@id='type']/ul");
var_dump($elements);
foreach ( $elements as $e){
foreach ($e->childNodes as $es){
var_dump($es->nodeValue);
}
}
?>
以上、php DOM 解析を紹介しました。側面の内容も含まれており、PHP 教程に関心のある友人の助けになることを望みます。