PHPとXML:expat関数の使い方(2)

WBOY
リリース: 2016-06-13 12:37:27
オリジナル
1104 人が閲覧しました

 PHP と XML: useexpat 関数数(二)
次の手順でこの文書を処理します。



/*NewsBoy : PHP で書かれた Web 用のニュース システムJustin Grant (Web: jusgrant.cjb.net または justin.host.za.net Mail: justin@glendale.net) 3 月 25 日 V0.0.2 Newsboy を PHP クラスに変換し、レイアウトを簡単に変更できるようにしました。生成される HTML も少し読みやすくなりました。 3 月 24 日 V0.0.1 非常に大まかで基本的な初期バージョンが完成しました。*/
class newsboy { var $xml_parser; var $xml_file;変数$html; var $open_tag ; var $close_tag ;
//クラス コンストラクター
function newsboy() { $this->xml_parser = ""; $this->xml_file = ""; $this->html = ""; $this->gt;open_tag = array(
//これらはデフォルト設定ですが、変更は非常に簡単です
"NEWSBOY" => "nn", "STORY" =>gt; " ", "DATE " => ""、"SLUG" => " "、"TEXT" => ""、"PIC" => ""、"NEWLINE" => "" ); $this->close_tag = array( "ニュースボーイ" => "
nnn", "STORY" => "", "DATE" => "", "SLUG" => "
", "TEXT" => "n", "PIC" => " "
" ); }
//クラス デストラクター (PHP はデストラクターをサポートしていないため、手動で呼び出す必要があります)

function destroy() { xml_parser_free($this->xml_parser); }
//クラスメンバー
function concat($str) { $this->html } function startElement($parser, $name, $attrs) { //global $open_tag; if ($format= $this->open_tag[$name]) { $this->html .= $format;
function endElement($parser, $name) { global $close_tag; if ($format= $this->close_tag[$name]) { $this->html .= $format; }
function CharacterData($parser, $data) { $this->html .= $data; }
/* function PIHandler($parser, $target, $data) { //switch (strto lower($target)) { // case "php": eval($data); // }*/
function parse() { $this->xml_parser = xml_set_object($this->) xml_parser, &$this); // $map_array でタグが確実に見つかるようにケースフォールディングを使用します
xml_parser_set_option($this->xml_parser, XML_OPTION_CASE_FOLDING, true); xml_set_element_handler($this->xml_parser, "startElement", "endElement"); xml_set_character_data_handler($this->xml_parser, "characterData");//xml_set_processing_instruction_handler($this->xml_parser, "PIHandler");
if (!($fp = fopen($this->xml_file, "r"))) { die("XML 入力を開けませんでした"); } while ($data = fread($fp, 4096)) { if (!xml_parse($this->xml_parser, $data, feof($fp))) { die(sprintf("XML エラー: %s 行目) %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } } }}
?>



-------------------------------------- ----------------------------------------

ここにいますこの種の構造関数では、2 つのマークを開くための数字のグループを作成しました。この数字と後で分析するマークは、
と同様であり、それらの値には、マークを付けるための形式化が含まれています。承認されたHTMLコード

XML アナライザーをもう必要としないために、単一の種類の解析関数を使用することにしました。この関数は手作業で調整することができません。
は、PHP が各オブジェクトの解放時間をサポートしていないためです。

その後、XML 文書内のオープンおよびオフのマークを分析するために使用する主回帰メソッドを定義しました。また、
を使用するためのデータ分析メソッドも定義しました。開始および終了マークにデータがある場合、データに対して完全な形式化が行われます。次に、これらの回帰メソッドがアナライザーに
を追加する方法をデモで説明します。

オープンまたはリンクのいずれかに個別に調整されます) で、指定された名前
がインデックス値として使用され、対応する数のグループが検査されます。
'html' プロパティは、後で私が実際にテキストのコンテンツを表示するときに使用します。 🎜> 登録されて呼び出された PIHandler のメソッドは、関数の逆関数であり、これも実現していません。 存在する場合は、XML
文中で php スクリプトを直接処理します。

で、私は次の主要な分析方法の解析用、パース一猜、parse()!!!

最初は関数xml_parser_create()を使用して、expatのxmlアナライザーの例を返し、クラスの
プロパティ&this->xml_parser内に保存されています。

次に、関数 xml_set_object() を使用して、クラス メソッドのコールバック関数を登録する必要があります。

xml_set_object($this->xml_parser, &$this) のように使用します。最初のパラメータでは、
を使用して XML パーサーを保持するクラス属性を指定し、2 番目のパラメータでは PHP オブジェクトのインスタンス アドレスを指定しました。これにより、アナライザーは、登録されるすべての
コールバックが、そのアドレスにある指定されたクラスの実際のメソッドであることを認識します。これは c または c の「参照渡し」のようなもので、
単に「参照変数」と呼ぶ人もいます。

次の行では、xml_parser_set_option() を呼び出して、case
折り畳みを使用して XML パーサー属性を設定します。大文字と小文字の折りたたみは、XML 文書を解析するときに大文字と小文字の区別を気にしないことをパーサーに知らせるだけですが、
または のような 2 つの異なるタグを定義するために大文字と小文字の区別を使用したい場合は、それを設定することはできません。

xml_set_element_handler() を使用して、
"startElement" および "endElement" という名前の開始タグと終了タグのコールバック関数を指定します。

次に、xml_set_character_data_handler() を使用して、文字データ処理ハンドルを
characterData() という名前のコールバック関数として指定します。注釈付きの関数呼び出し xml_set_processing_instruction_handler()、
は、関数 PIHandler() を登録するために使用した呼び出しです。 PIHandler を XML ドキュメントに含めて、PHP コードを処理できます。

コードの残りの部分は、XML ファイルを読み取って解析するだけです。エラーが発生した場合は、エラー
が発生した行番号を含むエラーの詳細が返されます。​

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!