PHP 5.0 を使用して XML ドキュメントを簡単に解析する (1)
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
<?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> ?>

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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