ホームページ php教程 php手册 PHP 5.0 を使用して XML ドキュメントを簡単に解析する (1)

PHP 5.0 を使用して XML ドキュメントを簡単に解析する (1)

Jun 21, 2016 am 09:15 AM
echo font name xml

xml

sax メソッドを使用する場合、3 つの関数を自分で構築する必要があり、これら 3 つの関数を直接使用してデータを返す必要があるため、強力なロジックが必要です。 構造の異なる XML を処理する場合、これら 3 つの関数を再構築する必要があり、面倒です!

DOM メソッドを使用する方が優れていますが、各ノードをノードとして扱うため、それを操作するために多くのコードを記述する必要があります。 、問題です

インターネット上にはオープンソースの XML 解析クラス ライブラリがいくつかありますが、いつも不安を感じていて、いつも他の人に倣っているようです

最近は Java に取り組んでいます。これは非常に面倒だったので、今後 XML 解析プロセスで再び問題が発生するのを防ぐために、考えを変えて PHP コードを書くことにしました。次の XML 解析クラスを作成するのに 1 日を費やしました。もの。

実装は「saxモードでの解析結果」をパッケージ化することで実現されており、個人的にはかなり実用的で、パフォーマンスも問題なく、基本的にはほとんどの処理要件を満たせます。

機能:

1. 基本xmlファイルのノードをクエリ/追加/変更/削除します。

2. xmlファイルのすべてのデータを配列にエクスポートします。

3.全体の設計はooメソッドを採用しています、結果セットを操作する場合、使用方法は dom に似ています

欠点:

1. 各ノードに ID を持たせるのが最善です (以下の例を参照)、各 "ノード名" = "ノード label_ "Node ID"。この ID 値が設定されていない場合、プログラムはその ID を自動的に生成します。この ID は、0 から始まる上位ノード内のこのノードの位置番号です。

2. ノードをクエリする場合、「ノード名」を「|」記号で接続できます。この「ノード名」は、上位ノードの名前を順に記載したものである。

使用説明:

以下の例を実行すると、実行結果ページで関数の使用説明が表示されます

コードはphp5で実装されており、php4では正しく実行できません。

まだ書き終えたばかりなので、まだ文書を整理していません。以下の例は機能の一部を示しているだけです。さらに詳しい機能を知りたい場合は、ソースコードを参照してください。

ディレクトリ構造:

      test.php      test.xml      xml / SimpleDocumentBase.php      xml / SimpleDocumentNode.php      xml / SimpleDocumentRoot.php      xml / SimpleDocumentParser.php
ログイン後にコピー
ファイル:test.xml

<?xml version="1.0" encoding="GB2312"?><br><shop><br> <name>华联</name><br> <address>北京长安街-9999号</address><br> <desc>连锁超市</desc><br> <cat id="food"><br>  <goods id="food11"><br>   <name>food11</name><br>   <price>12.90</price><br>  </goods><br>  <goods id="food12"><br>   <name>food12</name><br>   <price>22.10</price><br>   <desc creator="hahawen">好东西推荐</desc><br>  </goods><br> </cat><br> <cat><br>  <goods id="tel21"><br>   <name>tel21</name><br>   <price>1290</price><br>  </goods><br> </cat><br> <cat id="coat"><br>  <goods id="coat31"><br>   <name>coat31</name><br>   <price>112</price><br>  </goods><br>  <goods id="coat32"><br>   <name>coat32</name><br>   <price>45</price><br>  </goods><br> </cat><br> <special id="hot"><br>  <goods><br>   <name>hot41</name><br>   <price>99</price><br>  </goods><br> </special><br></shop>
ログイン後にコピー

ファイル:test.php

  <?php    require_once "xml/SimpleDocumentParser.php";<br>    require_once "xml/SimpleDocumentBase.php";<br>    require_once "xml/SimpleDocumentRoot.php";<br>    require_once "xml/SimpleDocumentNode.php";<br>   $test = new SimpleDocumentParser();<br>    $test->parse("test.xml");<br>    $dom = $test->getSimpleDocument();<br>    echo "<pre>";<br>    echo "<hr><font color=red>";<br>    echo "下面是通过函数getSaveData()返回的整个xml数据的数组";<br>    echo "</font><hr>";<br>    print_r($dom->getSaveData());<br>    echo "<hr><font color=red>";<br>    echo "下面是通过setValue()函数,给给根节点添加信息,添加后显示出结果xml文件的内容";<br>    echo "</font><hr>";<br>    $dom->setValue("telphone", "123456789");<br>    echo htmlspecialchars($dom->getSaveXml());<br>    echo "<hr><font color=red>";<br>    echo "下面是通过getNode()函数,返回某一个分类下的所有商品的信息";<br>    echo "</font><hr>";<br>    $obj = $dom->getNode("cat_food");<br>    $nodeList = $obj->getNode();<br>    foreach($nodeList as $node){<br>    $data = $node->getValue();<br>    echo "<font color=red>商品名:".$data[name]."</font><br>";<br>    print_R($data);<br>    print_R($node->getAttribute());<br>    }<br>    echo "<hr><font color=red>";<br>    echo "下面是通过findNodeByPath()函数,返回某一商品的信息";<br>    echo "</font><hr>";<br>    $obj = $dom->findNodeByPath("cat_food|goods_food11");<br>    if(!is_object($obj)){<br>    echo "该商品不存在";<br>    }else{<br>    $data = $obj->getValue();<br>    echo "<font color=red>商品名:".$data[name]."</font><br>";<br>    print_R($data);<br>    print_R($obj->getAttribute());<br>    }<br>   echo "<hr><font color=red>";<br>    echo "下面是通过setValue()函数,给商品\"food11\"添加属性, 然后显示添加后的结果";<br>    echo "</font><hr>";<br>    $obj = $dom->findNodeByPath("cat_food|goods_food11");<br>    $obj->setValue("leaveword", array("value"=>"这个商品不错",<br>          "attrs"=>array("author"=>"hahawen", "date"=>date('Y-m-d'))));<br>    echo htmlspecialchars($dom->getSaveXml());<br>    echo "<hr><font color=red>";<br>    echo "下面是通过removeValue()/removeAttribute()函数,<br>          给商品\"food11\"改变和删除属性, 然后显示操作后的结果";<br>    echo "</font><hr>";<br>    $obj = $dom->findNodeByPath("cat_food|goods_food12");<br>    $obj->setValue("name", "new food12");<br>    $obj->removeValue("desc");<br>    echo htmlspecialchars($dom->getSaveXml());<br>    echo "<hr><font color=red>";<br>    echo "下面是通过createNode()函数,添加商品, 然后显示添加后的结果";<br>    echo "</font><hr>";<br>    $obj = $dom->findNodeByPath("cat_food");<br>    $newObj = $obj->createNode("goods", array("id"=>"food13"));<br>    $newObj->setValue("name", "food13");<br>    $newObj->setValue("price", 100);<br>    echo htmlspecialchars($dom->getSaveXml());<br>    echo "<hr><font color=red>";<br>    echo "下面是通过removeNode()函数,删除商品, 然后显示删除后的结果";<br>    echo "</font><hr>";<br>    $obj = $dom->findNodeByPath("cat_food");<br>    $obj->removeNode("goods_food12");<br>    echo htmlspecialchars($dom->getSaveXml());<br>  ?>
ログイン後にコピー



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PowerPoint を使用して XML ファイルを開くことはできますか? PowerPoint を使用して XML ファイルを開くことはできますか? Feb 19, 2024 pm 09:06 PM

XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。

Python を使用した XML データのフィルタリングと並べ替え Python を使用した XML データのフィルタリングと並べ替え Aug 07, 2023 pm 04:17 PM

Python を使用した XML データのフィルタリングと並べ替えの実装 はじめに: XML は、データをタグと属性の形式で保存する、一般的に使用されるデータ交換形式です。 XML データを処理するとき、多くの場合、データのフィルタリングと並べ替えが必要になります。 Python には、XML データを処理するための便利なツールとライブラリが多数用意されています。この記事では、Python を使用して XML データをフィルタリングおよび並べ替える方法を紹介します。 XML ファイルの読み取り 始める前に、XML ファイルを読み取る必要があります。 Python には XML 処理ライブラリが多数ありますが、

Python で XML データを CSV 形式に変換する Python で XML データを CSV 形式に変換する Aug 11, 2023 pm 07:41 PM

Python の XML データを CSV 形式に変換する XML (ExtensibleMarkupLanguage) は、データの保存と送信に一般的に使用される拡張可能なマークアップ言語です。 CSV (CommaSeparatedValues) は、データのインポートとエクスポートに一般的に使用されるカンマ区切りのテキスト ファイル形式です。データを処理するとき、分析や処理を容易にするために、XML データを CSV 形式に変換する必要がある場合があります。 Pythonは強力です

Python を使用した XML データのマージと重複排除 Python を使用した XML データのマージと重複排除 Aug 07, 2023 am 11:33 AM

Python を使用した XML データのマージと重複排除 XML (eXtensibleMarkupLanguage) は、データの保存と送信に使用されるマークアップ言語です。 XML データを処理するとき、複数の XML ファイルを 1 つにマージしたり、重複データを削除したりする必要がある場合があります。この記事では、Python を使用して XML データのマージと重複排除を実装する方法と、対応するコード例を紹介します。 1. XML データのマージ 複数の XML ファイルがある場合、それらをマージする必要があります。

Python は XML と JSON 間の変換を実装します Python は XML と JSON 間の変換を実装します Aug 07, 2023 pm 07:10 PM

Python は XML と JSON 間の変換を実装します はじめに: 日常の開発プロセスでは、異なる形式間でデータを変換する必要があることがよくあります。 XML と JSON は一般的なデータ交換形式であり、Python ではさまざまなライブラリを使用して XML と JSON の間で変換できます。この記事では、一般的に使用されるいくつかの方法をコード例とともに紹介します。 1. Python で XML を JSON に変換するには、xml.etree.ElementTree モジュールを使用できます。

Python を使用した XML でのエラーと例外の処理 Python を使用した XML でのエラーと例外の処理 Aug 08, 2023 pm 12:25 PM

Python を使用した XML でのエラーと例外の処理 XML は、構造化データの保存と表現に使用される一般的に使用されるデータ形式です。 Python を使用して XML を処理すると、エラーや例外が発生することがあります。この記事では、Python を使用して XML のエラーと例外を処理する方法を紹介し、参考用のサンプル コードをいくつか示します。 Try-Except ステートメントを使用して XML 解析エラーを捕捉する Python を使用して XML を解析すると、時々、次のようなエラーが発生することがあります。

PHP を使用して XML データをデータベースにインポートする PHP を使用して XML データをデータベースにインポートする Aug 07, 2023 am 09:58 AM

PHP を使用した XML データのデータベースへのインポート はじめに: 開発中、さらなる処理や分析のために外部データをデータベースにインポートする必要がよくあります。一般的に使用されるデータ交換形式として、XML は構造化データの保存と送信によく使用されます。この記事では、PHP を使用して XML データをデータベースにインポートする方法を紹介します。ステップ 1: XML ファイルを解析する まず、XML ファイルを解析し、必要なデータを抽出する必要があります。 PHP には XML を解析するためのいくつかの方法が用意されており、最も一般的に使用されるのは Simple を使用する方法です。

PHP と XML を使用して地理位置情報と地図データを処理および表示する PHP と XML を使用して地理位置情報と地図データを処理および表示する Aug 01, 2023 am 08:37 AM

PHP と XML を使用した地理位置情報と地図データの処理と表示 概要: 地理位置情報と地図データの処理と表示は、Web アプリケーションを開発する際の一般的な要件です。 PHP は、XML 形式のデータを操作できる人気のあるサーバー側プログラミング言語です。この記事では、PHP と XML を使用して地理位置情報と地図データを処理および表示する方法を説明し、いくつかのサンプル コードを提供します。 1. 準備: 開始する前に、PHP および Simple などの関連拡張機能がサーバーにインストールされていることを確認する必要があります。

See all articles