ホームページ > php教程 > php手册 > DOMXML 関数の注意事項

DOMXML 関数の注意事項

WBOY
リリース: 2016-06-21 09:09:40
オリジナル
925 人が閲覧しました

dom|xml|notes|function

/**
* 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(文字列名) ノードを作成します。
* xpath_new_ context
* xpath_eval
* xpath_eval_expression
* r
* object domxml_set_attribute(resource doc,string name,string value) 属性を追加
* domxml_setattr
* array domxml_children(object doc|node) 子ノードを返す
* resource _子( 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(); // 文字列に変換します。ヘッダーは XML バージョンです = "1.0" 如果 // 再度実行すると xml version = "1.0" enCoding = "ISO-8859-1" <br> // $ Myxml = EREGI_REPLACE ('[0-9]+;' ,"",$myxml); // <br>echo "xmltree を使用して解析します<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 "<textareacols=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 "custom xml<br>";<br/> echo " <textarea cols=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>$ar[] = $doc-&gt ;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" encoding="gb2312" ?>'."n"; <br> if(count($xmldoc->children) == 1) // ルートノード、他のメンバーなし<br> $docs[] = $xmldoc->root();<br> else <br> $docs = $xmldoc->children() // ルートノード、他のメンバーと <br> }else {<br> $docs = $xmldoc->children(); // echo __LINE__ ."<br>";<br/> foreach($docs as $doc) {<br/> $attr = $doc->attributes();<br/> switch($doc->type) {<br/> case 1:<br/> $xmlstr . = "<{$doc-&gt ;tagname}" // タグヘッダー<br/>if ($ attr) {<br/> Foreach ($ attr as $ key) <br/> $ xmlstr. = "{$ key-& gt; name} =" {$ key- & gt; value} "" "; xmlstr .= "> ; "; //タグの終わり<br>$ xmlstr。= xml_dumpmem($ doc); // entere child node $xmlstr .= $ doc->content;<br> ) ;?{$ doc- & gt; target} "; <br> $ xmlstr. =" {$ doc- & gt; data}; {<br> $filename = "resume.xml";<br>// $filename = "resume.xsl";<br> $filename = "xml ソース ツリー.xml";<br> $fp = fopen($filename,"r") <br> $inXML = fread($fp,filesize($filename)); <br> fclose($fp); <br> $inXML = eregi_replace(' エンコーディング="[a-z0-9_-]+"',"",$inXML) ;<br> // $doc = xmltree($inXML); // xmltree を使用して解析します<br> $doc = xmldoc($inXML) // xmldoc を使用して解析します<br>}<br><br>// xsl ドキュメントの解析には使用できません<br><br>$myxml = xml_dumpmem($doc);<br>echo "独自の dumpmem を作成すれば間違いはありません<br>";<br>echo "<textareacols=60 rows=5>$myxml</textarea><br>" ;<br>print_r ($doc);<br><br>?><br>









関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート