ホームページ  >  記事  >  php教程  >  PHP4およびPHP5バージョンでのXML文書の解析操作方法を簡単に説明します。

PHP4およびPHP5バージョンでのXML文書の解析操作方法を簡単に説明します。

WBOY
WBOYオリジナル
2016-06-21 08:53:401107ブラウズ

PHP ウェブサイトの開発と構築の過程では、XML ドキュメントを解析する必要がよくあります。PHP4 バージョンには XML パーサー (sax) が付属しており、PHP5 バージョンには SimpleXML (dom ベース) XML 拡張機能が追加されています。今日は、さまざまな環境で XML ドキュメントを解析する方法を紹介します。
XML ドキュメント

テーブル>

PHP5 バージョンでの SimpleXML の使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

version="1.0" encoding="gbk"?>
>  
    >  
        >Leapsoul-PHP网站开发>  
        >http://www.leapsoul.cn>  
        >分享PHP网站开发与建设的乐趣,教你如何建立网站>
        >David>
        >2009-05-13>
        >QQ:154130270>
    >

    >  
        >Leapsoul-PHP网站开发>
        >http://www.leapsoul.cn>
        >分享PHP网站开发与建设的乐趣,教你如何建立网站>
        >David>
        >2009-05-13>
        >QQ:154130270>
    >
>

1234567891011121314151617 181920

バージョン<🎜>="1.0"<🎜> エンコーディング<🎜>="gbk"<🎜>?> > > >Leapsoul-PHP Web サイト開発> <ウェブサイト>http://www.leapsoul.cn> >PHP ウェブサイトの開発と構築の楽しさを共有し、教えますウェブサイトの作成方法> <ブロガー>デビッド> <日付>2009-05-13> >QQ:154130270> > > >Leapsoul-PHP Web サイト開発> <ウェブサイト>http://www.leapsoul.cn> >PHP ウェブサイトの開発と構築の楽しさを共有し、教えますウェブサイトの作成方法> <ブロガー>デビッド> <日付>2009-05-13> >QQ:154130270> > >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

$info = simplexml_load_file('leapsoulcn.xml');

print_r($info);
   
$name = $info->LeapsoulInfo[0]-> ;名前;
   
エコー $name;

foreach ($info->LeapsoulInfo として $LeapsoulInfo)
{
    エコー $LeapsoulInfo->名前."
"
;
    エコー $LeapsoulInfo->ウェブサイト."
"
;
    エコー $LeapsoulInfo->説明."
"
;
    エコー $LeapsoulInfo->ブロガー."
"
;
    エコー $LeapsoulInfo->日付."
"
;
    エコー $LeapsoulInfo->qq."
"
;
}

foreach($info->xpath('/ /name') として $value) {
    エコー $value.'
'
;
}
   
foreach($info->LeapsoulInfo[0]->子供() として $value) {
    エコー $value->getName();
    エコー $value.'
'
;
}

$info->LeapsoulInfo[0]-> ;addChild('msn', 'MSN:davidfaithman@hotmail.com');
$info->asXML('leapsoulcn.xml');

コードのコメント

行 1: simplexml_load_file: XML ドキュメントを操作オブジェクトとして読み取ります。ローカルまたはリモートの XML ドキュメントを読み取ることができます。simplexml_load_string: XML 文字列を操作オブジェクト Object

行 3: 特定のノードの情報を取得する方法がわからない場合は、print_r 関数を使用して出力を印刷し、simplexml 解析によって返されるオブジェクトは配列構造を持っています。

5~8行目:XML文書のノード情報をオブジェクトモードで読み込み、読み込み方法:ハンドル→ノード要素名→子ノード、同じノード要素が複数ある場合は配列(array)メソッドを使って読み込みます

注意: simplexml 解析によって返される情報は UTF8 形式であるため、Web サイトが GBK を使用している場合は、iconv 関数またはその他の utf8 および gbk 変換関数を使用してトランスコードする必要があります。 . 、たとえば: $name = iconv('utf-8','gbk',$name);

9~17行目:全要素配下の子ノード情報をトラバーサル形式で読み込みます

行 19 ~ 21: simplexml の

xpath 関数は XML データをクエリするために使用されます。たとえば、ここでクエリされるのはすべての名前ノード の値です。

行 23 ~ 26:

children 関数は、特定のノードの下にあるすべての子ノードの値を検索するために使用されます。 getName 関数は、各子ノードの要素名を取得するために使用されます

行 28 ~ 29:

addChild 関数は、特定のノードの下に子ノードを追加するために使用されます。asXML 関数は、変更された XML ドキュメントを保存します

クリックすると、SimpleXML 関数の説明がさらに表示されます。

PHP4 版に付属する XML 関数の解析方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/>15
16
17
18
19
20
21
22
23
24
/>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

function doStartElement($xmlParser,$name,$attr)
{
    //对开始元素的处理
}
   
function doEndElement($xmlParser,$name)
{
    //对结尾元素的处理
}
   
function doStringData($xmlParser,$data)
{
    //对元素间的字符数据的处理
}

$xmlObj = xml_parser_create("UTF-8");

xml_set_element_handler($xmlObj,"doStartElement","doEndElement");

xml_set_character_data_handler($xmlObj,"doStringData");

xml_parse($xmlObj,file_get_contents("leapsoulcn.xml"));

xml_parser_free($xmlObj);

関数 doStartElement($xmlParser,$name,$attr)
{
//開始要素の処理
}

function doEndElement($xmlParser, $name)
{
//終了要素の処理
}

関数 doStringData($xmlParser, $data)
{
//要素間の文字データの処理
}

$xmlObj = xml_parser_create("UTF-8");

xml_set_element_handler($xmlObj,"doStartElement","doEndElement");

xml_set_character_data_handler($xmlObj,"doStringData");

xml_parse($xmlObj,file_get_contents("leapsoulcn.xml"));

xml_parser_free($xmlObj);

コードのコメント

1~15行目:開始要素、終了要素、要素間の文字データの処理関数を定義

行 16: 新しい XML パーサーを作成し、他の XML 関数で使用できるリソース ハンドルを返します。入力のデフォルトのエンコーディングは「ISO-8859-1」です。同時にサポートされるエンコード方式は「UTF-8」と「US-ASCII」であり、出力データのエンコード方式はxml_parser_create関数の定義と一致します。

18 行目: 開始要素ハンドラーと終了要素ハンドラーを作成します

行 20: 要素間の関連データを処理する文字データ プロセッサを確立します
: XML 構文パーサーはスペースを追加または削除しません。スペースの選択は開発者によって決定されます。

行 22: パーサーを開始します。xml_parse 関数の 2 番目のパラメーターは文字型なので、ここではローカルとリモートで使用できる file_get_contents 関数を使用します。 fopen関数

も使えます。

行 24: XML 解析が完了したら、パーサーによって占有されていたメモリを解放します

組み込み XML 関数解析のアイデア

第 1 ステップ: 開始要素、終了要素、および要素間の文字データの処理関数をカスタマイズします。第 2 ステップ: XML パーサーを確立します。第 4 ステップ: 開始要素と終了要素のプロセッサを確立します。 : 要素間の関連データを処理する文字データ プロセッサを確立します。 ステップ 5: パーサーを開始します。 ステップ 6: XML 解析が完了したら、パーサーによって占有されていたメモリを解放します。

概要:

一般に、PHP に付属の XML パーサーは非常に使いにくく、強力なロジックを必要とします。また、XML 文書の構造が異なる場合、要素や文字など 3 つの関数を再定義する必要があり、これらは、PHP に追加されます。 PHP5 バージョン。SimpleXML が拡張された後は、XML 解析が非常に簡単になります。もちろん、より複雑な XML ドキュメント解析操作を実行する必要がある場合は、非常に強力な libxml をダウンロードしてインストールして使用することもできます。

注意: PHP Web サイト開発チュートリアル-leapsoul.cn 転載の際は、元のソースとこの記述をリンクの形で明記してください。



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