ホームページ  >  記事  >  php教程  >  phpのxml読み込みに関する機能の紹介

phpのxml読み込みに関する機能の紹介

WBOY
WBOYオリジナル
2016-06-13 12:29:011103ブラウズ

オブジェクト XML 解析関数の説明
要素 xml_set_element_handler() 要素の先頭と末尾
文字データ xml_set_character_data_handler() 文字データの先頭
外部エンティティ xml_set_external_entity_ref_handler() 外部エンティティの出現
未解析の外部エンティティxml_set_unparsed_entity_decl_ handler() 未解決の外部エンティティの発生
処理命令の発生 xml_set_processing_instruction_handler() 処理命令の発生
表記法宣言の発生 xml_set_notation_decl_handler() 表記法宣言の発生
Default xml_set_default_handler() その他ハンドラー関数を指定しないイベント

次に、パーサー関数を使用して XML データを読み取る簡単な例を示します:

XML ファイルのコードは次のとおりです:

このプログラムの結果は次のとおりです:

引用:--------------------------------- ----------------- ------------------------------
名前: Zhang San ポジション: マネージャー
名前: Li Si ポジション: アシスタント

コードをコピー コードは次のとおりです:



<従業員>
/name>
<役職> 45"> マネージャー



李思
< Position age="45">/position>
🎜>
$parser = xml_parser_create();パーサーエディターを作成します
xml_set_element_handler($parser, "startElement", "endElement"); //タグがトリガーされたときに設定します 対応する関数はそれぞれ startElement と endElenment です

xml_set_character_data_handler($parser, "characterData") ;// データを読み取るときに対応する関数を設定します
$xml_file="1.xml";// 読み取る内容を XML ファイルで指定します。URL を指定できます
$filehandler = fopen($xml_file, "r ");//ファイルを開きます

while ($data = fread($filehandler, 4096)) { xml_parse($parser, $data, feof($filehandler)); }//毎回の処理のために 4096 バイトを取り出します

fclose($filehandler)
xml_parser_free($ parser);//パーサー parser を閉じて解放します

$name =false;
$position=false;
function startElement($parser_instance, $element_name, $attrs) // 開始タグ イベント関数
{
global $name,$position
if ($element_name=="名前")
{
$name=true;
$position=false;
echo "名前:" }
if($element_name= ="POSITION")
{$name=false;
$position=true;
echo "位置: ";
}
}

関数characterData($parser_instance) , $xml_data) //データ読み込み時の関数
{
global $name,$position;
if($position)
echo $xml_data."
"; ($name)
echo $xml_data."
";
}

function endElement($parser_instance, $element_name) //タグイベントを終了する関数
{
グローバル $name,$position;
$position=false;

?

PHP の XML 読み込み方法の紹介

1.xml とは何か、xml の用途は何ですか
XML (Extensible Markup Language) は拡張可能なマークアップ言語です。 . HTML と同様に、SGML (Standard Generalized Markup Language、標準汎用マークアップ言語) です。 XML は、インターネット環境におけるクロスプラットフォームのコンテンツ依存テクノロジであり、現在、構造化ドキュメント情報を処理するための強力なツールです。拡張マークアップ言語 XML は、一連の単純なタグを使用してデータを記述する単純なデータ ストレージ言語です。これらのタグは、バイナリ データよりも多くのスペースを必要としますが、XML は非常にシンプルで習得が簡単です。そして使用します。
XML には、データの保存、データの交換、さまざまな種類のアプリケーション ソフトウェアのプロンプト データなど、さまざまな用途があります。
2番目、phpでxmlを読み取る方法
XMLソースファイル

コードをコピーします コードは次のとおりです。



<人間>

Zhang Ying< ;/name>

28

/name> ;sex>Men

28


1) DOMDocument は XML を読み取ります。



コードをコピー

コードは次のとおりです。 $doc = new DOMDocument();

$doc->load('person.xml'); //xml ファイルを読み込みます
$humans = $doc->getElementsByTagName( "humans" ); //人間タグのオブジェクト配列を取得します>foreach( $humans as $human )
{
$names = $human->getElementsByTagName( "name" ); // タグ名のオブジェクト配列を取得します
$name = $names-> ;item(0)->nodeValue; //
$sexs = $human->
などのノードの値を取得します。 $sex = $sexs->item(0)->nodeValue;
$olds = $human->getElementsByTagName( "old" ); ->nodeValue;
echo "$name - $sex - $oldn"
}
?>


; 2) simplexml 読み取り XML


コードをコピー

コードは次のとおりです。

$xml_array=simplexml_load_file('person.xml' ); // XML のデータを配列オブジェクトに読み込みます foreach($xml_array as $tmp){

echo $tmp->name."-".$tmp->sex. >old."
";

}
?>


3) PHP 正規表現を使用してデータを記憶します


コードをコピーします

コードは次のとおりです。

$xml = "" $f = fopen( 'person.xml'; , 'r');

while( $data = fread( $f, 4096 ) ) {

$xml .= $data;
fclose( $f ) ; /上記のデータを読み取ります
preg_match_all( "/(.*?)/s", $xml, $humans ); // 一番外側のタグ内と一致
foreach の内容( $humans[1] as $k=>$human )
{
preg_match_all( "/(.*?)/", $ human, $name ); //名前の一致
preg_match_all( "/(.*?)/", $human, $sex ); //性別の一致
preg_match_all( "/ (.*?)/", $human, $old ); //年齢に一致
}
foreach($name[1] as $key =>$val){
echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."
}
?" ;


4)xml データを読み取るための xmlreader



コードをコピー

コードは次のとおりです。

$reader = new XMLReader(); $reader->open('person.xml'); //xml データを読み取ります$ i=1; ($reader->read()) { //読み取るかどうかif ($reader->nodeType == XMLReader::TEXT) { //ノードのタイプを決定します

if($i%3 ){

echo $reader->value; // ノードの値を取得します
}else{
echo $reader->value."
}
$i ;
}
}
?>
3. 概要
xml を読み取る方法はたくさんありますが、ここではいくつかを紹介します。上記の 4 つのメソッドはすべて、タグ内のデータを読み取ることができます (Zhang Ying)。ただし、最初の 3 つのメソッドの XML 読み取り機能の設計上​​の焦点は、タグ内の値を読み取ることです。 jquery の text() メソッドは、xmlreader とは異なります。その焦点は、タグ内の値を読み取ることではなく、タグの属性を読み取り、送信されるすべてのデータを属性に入れることにあります (ただし、上で述べたように、 XML ファイルが指定されており、XML ファイルを再度作成したくないため、私が作成したメソッドは依然としてタグ内の値を受け取ります。
例を挙げて説明します。

名前の性別と読み方の値内容はもっと面倒です。 jquery の attr(”); に相当します。
上記はあくまで個人的な意見ですので、皆様のお役に立てれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。