Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP dalam tindakan: Mengekstrak data daripada dokumen XML menggunakan XPath

PHP dalam tindakan: Mengekstrak data daripada dokumen XML menggunakan XPath

PHPz
PHPzasal
2023-06-13 22:03:081581semak imbas

XPath ialah alat yang sangat berguna apabila bekerja dengan data XML menggunakan PHP. XPath ialah bahasa untuk mencari elemen dalam dokumen XML. Ia membantu pembangun mengekstrak data yang diperlukan daripada dokumen XML dengan cepat dan mudah.

Dalam artikel ini, kami akan memperkenalkan konsep asas XPath dan menerangkan secara terperinci cara menggunakan XPath dalam PHP. Kami akan menunjukkan cara menggunakan XPath untuk mengekstrak data daripada dokumen XML dan membina aplikasi PHP mudah untuk menunjukkan kuasa XPath.

Apakah itu XPath?

XPath ialah bahasa untuk mencari nod dalam dokumen XML. Ia menggunakan ungkapan laluan untuk menerangkan elemen dan atribut dalam dokumen. Ekspresi XPath adalah berdasarkan struktur dokumen XML dan digunakan untuk memilih nod atau satu set nod.

XPath ialah piawaian bebas, diseragamkan oleh W3C. Ekspresi XPath boleh digunakan dalam banyak bahasa pengaturcaraan, termasuk PHP.

Sintaks ungkapan XPath

Ekspresi XPath menggunakan ungkapan laluan untuk menerangkan elemen dan atribut XML. Ungkapan laluan terdiri daripada jujukan nod, pengendali hubungan dan predikat.

Berikut ialah beberapa sintaks asas ungkapan XPath:

  • / : Pilih elemen akar
  • // : Pilih elemen pada sebarang kedudukan
  • . : Pilih nod semasa
  • .. : Pilih nod induk
  • @ : Pilih atribut

Predikat dalam XPath membolehkan kami memilih nod tertentu. Berikut ialah beberapa contoh predikat:

  • [id]: Pilih elemen dengan atribut id
  • [position()]: Pilih elemen yang kedudukan elemennya memenuhi syarat

XPath menyokong berbilang pengendali, seperti pengendali logik, predikat yang sepadan, pengendali aritmetik, dsb.

XPath untuk PHP

Dalam PHP, kita boleh menggunakan sambungan DOM untuk menghuraikan dokumen XML dan menggunakan ungkapan XPath untuk mencari dan mengubah suai nod dokumen.

Berikut ialah skrip PHP asas untuk memilih nod dalam dokumen XML:

$xml = new DOMDocument();
$xml->load("products. xml" );

$xpath = DOMXPath baharu($xml);
$nodes = $xpath->query("//name");

foreach ($nod sebagai $ nod) {

echo $node->nodeValue . "

";
}

Kod di atas membaca dokumen XML menggunakan kelas DOMDocument dan kemudian melaksanakan pertanyaan XPath menggunakan kelas DOMXPath. Dalam contoh ini kita menanyakan Semua namakan elemen dalam dokumen dan gelungkan nilai nod setiap elemen

Contoh XPath

Sekarang, kami akan menunjukkan contoh yang lebih kompleks menggunakan XPath untuk mengekstrak data daripada dokumen XML >

Kami akan menggunakan dokumen XML berikut, yang mengandungi beberapa maklumat buku:

52b189f45abba88b2989c5c1f30b7a34

8c96469f216615ebb53bc03615beaaaa
682308e7cb6674226208e44aef4372e6

<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>

0f6fa65eb6c7f3ed4374d12bf4ac01bd

d954109270c54b86438b084516356003

<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>

< ;/book>

66bd91000a0463b198b805a556c90106

<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>

0f6fa65eb6c7f3ed4374d12bf4ac01bd

adcb83d22f39c33cc25e1b3e5b18e55f

Sekarang mari kita anggap kita ingin menanyakan Semua buku dengan kategori "memasak" dan mengeluarkan tajuk dan harganya untuk melakukan ini, kita boleh menulis kod PHP berikut:

$xml = new DOMDocument();

$xml->load .xml");

$xpath = DOMXPath baharu($xml);

$nodes = $xpath->query("//book[@category='cooking']" );

foreach ($nod as $node) {

$title = $xpath->query("title", $node)->item(0)->nodeValue;
$price = $xpath->query("price", $node)->item(0)->nodeValue;
echo "Title: $title, Price: $price

";

}

Kod di atas berfungsi dengan menghantar ungkapan XPath dalam kaedah pertanyaan Cari nod yang memenuhi kriteria dan gunakan gelung for untuk melelaran melalui semua nod. Untuk setiap nod, kami menggunakan pertanyaan XPath untuk mengekstrak atribut tajuk dan harga.

Dalam contoh ini, kami menggunakan predikat [@category='cooking'] untuk memilih elemen buku yang atribut kategorinya adalah memasak dan menggunakan $xpath->query("title", $node)- >item(0)->nodeValue mengekstrak tajuk. Begitu juga, kami menggunakan $xpath->query("price", $node)->item(0)->nodeValue untuk mengekstrak harga.

Kesimpulan

XPath menyediakan kaedah yang berkuasa untuk mengekstrak data dan mencari nod daripada dokumen XML. Dalam PHP, kita boleh menggunakan sambungan DOM untuk menghuraikan fail XML dan XPath untuk bertanya dan mengubah suai nod. Ini menjadikan bekerja dengan data XML lebih mudah dan lebih cekap, menjadikannya penyelesaian ideal untuk memproses sejumlah besar data XML dengan cepat dan cekap.

Atas ialah kandungan terperinci PHP dalam tindakan: Mengekstrak data daripada dokumen XML menggunakan XPath. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn