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

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境