ホームページ >バックエンド開発 >PHPチュートリアル >DOMXML 関数のメモ_PHP チュートリアル
/**
* DOMXML 関数のメモ
* php_domxml.dll 接続後
* get_define_functions() を使用して domxml サポート関数を取得します
*
* 現在、domxml は iso-8859-1 以外の言語宣言をサポートしていません
* は
* をサポートします
* したがって、このように変換する必要がある場合は、処理のために
* utf8_encode() utf8_decode() 関数が必要になる可能性があります
*
* 関数リスト
* string domxml_version(void) domxml のバージョン番号を返す
* object xmldoc( string str) 文字列から XML を作成します Domdocument オブジェクト
* object xmldocfile(string filename) ファイルから XML Domdocument オブジェクトを作成します
* object xmltree(string str) XML ドキュメントを解析し、ツリー構造を返します。 domxml 関数
* resource domxml_add_root(resource doc, string name) ルートノードの追加
* string domxml_dumpmem(resource doc) domxml オブジェクトを XML 文字列に変換します。この関数には問題があります。拡張 ASCII 文字が nnn;
* domxml_node_attributes
* domxml_elem_get_attribute
* domxml_elem_set_attribute
* array domxml_node_children(object doc|node) の形式で追加されます。子ノードを返す
* domxml_node_new_child
* object domxml_node(string name) ノードを作成します。
* xpath_new_ context
* xpath_eval
* xpath_eval_expression
* xptr_new_context
* xptr_eval
* object domxml_root(object doc) ルートノードを返す
* 配列 domxml_attributes(リソースノート) ノード属性の取得
* object (リソースドキュメント、文字列名)属性の読み取り
* domxml_getatt r
* object domxml_set_attribute(resource doc,string name,string value) 属性の追加
* domxml_setattr
* array domxml_children(object doc|node) 子ノードを返す
* resource domxml_new_child(string name,string content) 追加子ノード
* domxml_unlink_node
* set_content
* new_xmldoc
*
*/
?>
<br><?php<br>// ドキュメント XML ソース Tree.xml の内容 <br>$testxml = '<br><?xml version=" 1.0"coding="GB2312"?> <br><root><br><note>XML ドキュメントを読み取るとき、プロセッサはソース ツリーと呼ばれるツリーを形成します。ツリーにはテーブル内にさまざまなタイプのノードがあります。 <br></note><br><title>ソースツリーにはノードがあります</title><br><table><br><tr><th>ノードタイプ</th><th>説明</th>< ;/tr><br><tr><td>ルート (ルート)</td><td>これはツリーのルート ノードです。木のどこにでも現れる可能性があります。ルート ノードには子ノードが 1 つだけあり、子ノードは XML 文書内の文書要素ノードを参照します。 </td></tr><br><tr><td>Element (要素)</td><td>このノードはドキュメント内の任意の要素に使用されます。要素ノードの子ノードには、そのコンテンツの要素ノード、注釈ノード、処理情報ノード、およびテキスト ノードを指定できます。 </td></tr><br><tr><td>テキスト (テキスト)</td><td>ドキュメント内に出現するすべてのテキストはテキスト ノードにグループ化されます。テキスト ノードの直前または直後に、同じくテキスト ノードである兄弟ノードを持つことはできません。 </td></tr><br><tr><td>属性 (属性)</td><td>各要素ノードには、独自の属性ノードのセットが付属しています。デフォルトのプロパティ値は、指定されたプロパティと同じ方法で処理されます。これらのノードには子ノードはありません。 </td></tr><br><tr><td>Namespace(name)</td><td>xlmns: で始まるすべての要素と属性ノードには、名前空間ノードがあります。これらのノードには子ノードがありません。 </td></tr><br><tr><td>処理命令(処理命令)</td><td>各処理命令には個別のノードがあります。これらのノードには子ノードはありません。 </td></tr><br><tr><td>Comment (コメント)</td><td>それぞれにコメントノードがあります。これらのノードには子ノードはありません。</td></tr><br></table><br></root><br>';<br><br>echo "domxml version:".domxml_version();<br>echo "<p> </p> ";<br>// xmltree domxml_dumpmem<br>$filename = "xml ソース ツリー.xml";<br>//$filename = "resume.xml";<br>$fp = fopen($filename,"r"); <br>$inXML = fread ($fp,filesize($filename)); <br>fclose($fp); <br>//言語設定を削除<br>//$inXML = str_replace('coding="GB2312"',"",$inXML);<br>$ inXML = eregi_replace('coding="[a-z0-9_-]+"',"",$inXML);<br><br>$doc = xmltree($inXML) // xmltree を使用して解析します<br>$myxml = $doc- >dumpmem(); // 文字列に変換、ヘッダーは /$myxml = eregi_replace('[0-9]+;',"",$myxml) // <br>echo "を使用してparse<br>";<br>echo "<textareacols=60 rows =5>$myxml</textarea><br>";<br>//print_r($doc); // ツリー全体を表示するか、次を使用します。 var_dump($doc);<br><br>// xmldoc<br>$doc = xmldoc( $inXML); <br>$myxml = $doc->dumpmem();<br>echo "xmldoc を使用して解析します<br>";<br>echo "< ;textarea cols=60 rows=5>$myxml</textarea><br>";<br>//print_r($doc); // ルートノードのみが表示されます<br><br>// domxml_new_xmldoc<br>$doc = domxml_new_xmldoc( "1.0");<br><br>$root = $doc->add_root(" HTML");<br>$head = $root->new_child("HEAD", "");<br>$head->new_child(" TITLE", "DOMXML テスト 0");<br>$head->new_child( "TITLE", "DOMXML テスト 1");<br>$head->set_attribute("Language", "ge");<br>domxml_node_set_content($ head,"ppp"); // ノードの内容を設定します。複数の実行は重畳されます <br>domxml_node_set_content($head,"ttt");<br><br>// 関数内に 1 ~ 2 個の "_" だけがある関数ですオブジェクトメソッドとして使用できる名前。<br><br>$myxml = $doc->dumpmem ();<br>echo "Customized xml<br>";<br>echo "<textareacols=60 rows=5>$myxml< /textarea><br>";<br><br>// ノードの走査<br>/** <br>ノード構造<br> DomElement オブジェクト<br> type = 1<br> tagname = ノード名 <br> DomText オブジェクト<br> type = 3<br> content = セクションコンテンツポイント <br> DomCData オブジェクト<br> type = 4<br> content = セクションコンテンツポイント <br><br> DomProcessingstruction オブジェクト<br> type None<br> target = 処理命令<br> データ = パラメータ<br><br>*/<br>$ar[] = $doc->root(); // ルートノードを取得します<br>$ar[ ] = $ar[count($ar)-1]->children();<br> $ar[] = $ar[count($ar)-1][0]->children();<br><br>/ / 関数 domxml_children() はノード パラメーターを返すことはできません<br> // ノード パラメーターを返すには、domxml_attributes() を使用する必要があります<br> //var_dump(domxml_attributes($head));<br>//print_r($ar[1][0]- >attributes());<br>//print_r($ar);<br><br>function xml_dumpmem($xmldoc) { <br> static $mode = 0;<br> $xmlstr = "";<br> // ノードを取得し、配列 <br> if(get_class($xmldoc) == "DomDocument") {<br> $xmlstr = '<?xml version= "1.0"coding="gb2312"?>'."n";<br> if(count($ xmldoc->children) == 1) // ルート ノード、他のメンバーなし<br> $docs[] = $xmldoc- >root();<br> else<br> $docs = $xmldoc->children(); //他のメンバーを持つルートノード<br> }else {<br> $docs = $xmldoc->children(); // 一般ノード <br> }<br><br>// echo __LINE__."<br>";<br> foreach($docs as $ doc) {<br> $attr = $doc->attributes();<br> switch($doc->type) { <br> = " {$ キー ->名前}="{$キー->値}"" ; // タグパラメータ <br> }<br> $xmlstr .= ">"; // タグの終わり <br> $xmlstr .= xml_dumpmem($doc); // 子ノードを入力します <br> $xmlstr .= "</{$doc->tagname}> " ; // 終了タグ <br> Break <br> $xmlstr. = $doc->content;<br> ) lt;? {$ doc- & gt; target} "; <br> $ xmlstr. =" {$ doc- & gt; }? & gt; n "; 1) {<br> $filename = "resume.xml";<br> // $filename = "xml ソース ツリー.xml";<br> $fp = fopen ($filename,"r") ; <br> $inXML = fread($fp,filesize($filename)); <br> $inXML = eregi_replace(' エンコーディング = [a-z0-9_-] +"',"",$ inXML);<br>// $doc = xmltree($inXML); //xmltree を使用して解析します<br> $doc = xmldoc($inXML); myxml = xml_dumpmem($doc);<br>echo "独自の dumpmem を作成すれば、間違いはありません<br>";<br>echo "<textarea cols=60 rows=5>$myxml</textarea><br>"; <br>print_r($doc);<br><br> ?><br>