Bruk av XPath i PHP

Bruk av XPath i PHP
XML -dokument brukes til å lagre en liten mengde data, og noen ganger er det påkrevd å lese det aktuelle innholdet i XML -dokumentet basert på baneverdien ved hjelp av PHP -skript. XPath () -funksjonen brukes til å analysere innholdet i et XML -dokument. Denne funksjonen kan brukes ved å bruke simplexml_load_file () funksjon eller ved å lage objektet til Simplexmlelement klasse. XPath () -funksjonen kan brukes til å lese de spesielle XML -nodeverdiene som vises i denne opplæringen.

Syntaks:

Syntaksen til xpath () -funksjonen er gitt nedenfor.

Array XPath (String $ Path)

Denne funksjonen har ett argument som tar en baneverdi, og hvis banen eksisterer i en node i XML -dokumentet, vil verdien av noden bli returnert som en matrise. Ulike bruksområder for denne funksjonen har forklart i neste del av denne opplæringen.

Opprett XML -dokument:

Lag en XML -fil som heter Produkter.XML Med følgende innhold på stedet der PHP -filen vil bli opprettet for å analysere denne filen.




MN-56345
Dell
15 tommer Dell Monitor
700


HD-34278
Samsung
1 TB Samsung HDD
520


MS-67457
Logitech
Logitech trådløs mus
100


MN-76453
HP
14 tommer HP Monitor
750

Bruken av simplexml_load_file () funksjon:

Xpath () -funksjonen med objektet opprettet av simplexml_load_file () -funksjonen har vist i denne delen av denne opplæringen.

Eksempel-1: Les de bestemte XML-nodeverdiene

Følgende eksempel viser hvordan du kan lese innholdet i de spesielle nodeverdiene fra XML -dokumentet ved å definere XPath () -funksjonen. Objektvariabelen, $ xml er opprettet for å lese de spesifikke nodeverdiene til Produkter.XML fil. '/Produkter/produkt/merke' brukes i xpath () for å lese alle merkevareverdier. '/Produkter/produkt' brukes i xpath () for å lese alle barneknuteverdier av PRODUKT noder. for hver sløyfe brukes til å skrive ut verdiene til NAVN og PRIS noder.

// Opprett objekt for å lese XML -filen
$ xml = simplexml_load_file ('produkter.xml ');
// Søk i alle merkevareverdier
$ merke = $ xml-> xpath ('/produkter/produkt/merke');
// Skriv ut arrayverdiene
ekko "

Listen over merkenavn er:

";
foreach ($ merke som $ navn)
ekko "$ navn
";

// Søk i alle produktnodeverdier
$ produkter = $ xml-> xpath ('/produkter/produkt');
ekko "

Listen over produktnavn og pris:

";
ekko "";
ekko "";
// Skriv ut arrayverdiene
foreach ($ produkter som $ produkt)
ekko "";

ekko "
NavnPris
$ produkt-> navn $$ PRODUKT-> Pris
";
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet fra serveren.

Eksempel-2: Les de spesielle XML-nodeverdiene basert på tilstanden

Følgende eksempel viser hvordan du kan lese de spesielle nodeverdiene basert på tilstanden ved bruk av xpath () -funksjonen. Baneverdien, '/Produkter/produkt [Pris> 600]', vil søke på verdiene til alle barneknuter av PRODUKT node hvor verdien av PRIS Noden er mer enn 600. for hver sløyfe brukes til å skrive ut verdiene til NAVN og PRIS noder.

// Opprett objekt for å lese XML -filen
$ xml = simplexml_load_file ('produkter.xml ');
// søk på produktene der prisverdien er mer enn 600
$ produkter = $ xml-> xpath ('/produkter/produkt [pris> 600]');
ekko "

Listen over produktnavn og pris der prisen er mer enn 600:

";
ekko "";
ekko "";
// Skriv ut arrayverdiene
foreach ($ produkter som $ produkt)
ekko "";

ekko "
NavnPris
$ produkt-> navn $$ PRODUKT-> Pris
";
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet fra serveren.

Eksempel-3: Les de spesielle XML-nodeverdiene basert på attributt

Følgende eksempel viser hvordan du kan lese de spesielle nodeverdiene basert på attributtverdiene til XML -dokumentets spesifikke node ved å bruke XPath () -funksjonen. Baneverdien, '/Produkter/produkt [@kategori = ”skjerm”]' vil søke på verdiene til alle barneknuter av produktet Node, der kategoriattributtets verdi er Observere. for hver sløyfe brukes til å skrive ut verdiene til MERKENAVN, og PRIS noder.

// Opprett objekt for å lese XML -filen
$ xml = simplexml_load_file ('produkter.xml ');
// Søk på produktene der Çategory -attributtverdien er 'Monitor'
$ produkter = $ xml-> xpath ('/produkter/produkt [@kategori = "skjerm"]');
ekko "

Listen over produktmerke, navn og pris basert på kategori (skjerm):

";
ekko "";
ekko "";
// Skriv ut arrayverdiene
foreach ($ produkter som $ produkt)
ekko "";

ekko "
MerkeNavnPris
$ produkt-> merkevare$ produkt-> navn $$ PRODUKT-> Pris
";
?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet fra serveren.

Bruken av Simplexmlelement klasse:

Bruken av xpath () -funksjonen ved å opprette SimplexMlElement Class -objektet har vist i denne delen av denne opplæringen.

Eksempel-4: Bruk av XPath () ved å definere XML-innhold i en variabel

Følgende eksempel viser hvordan du leser XML -dokumentets nodeverdier som er erklært i en variabel i stedet for filen. XML -innhold lagres i $ xml_data variabel. “/Kunder/kunder” brukes som argumentverdi for xpath () -funksjonen for å lese alle verdier av barneknutene til kunde Node. Neste, a for hver sløyfe brukes til å skrive ut verdiene til navnet Node. “/Kunder/kunde [@avdeling = 'hr']" brukes som argumentverdi for en annen xpath () -funksjon for å lese alle verdiene til barneknuter til kundeknute der verdien av avdeling attributt er Hr. NESTE, a for hver sløyfe brukes til å skrive ut verdiene til e -post Node.

$ xml_data = <<

MD. Mahbub
[email protected]


Farhana Zaman
[email protected]


XML;
// definere objekt for å lese XML -dataene
$ xml = new SimpleXMLElement ($ xml_data);
// definere banen for å lese alle kundedata
$ kunder = $ xml-> xpath ("/kunder/kunde");
// Skriv ut navnet på kundene
ekko "

Listen over kundenavn:

";
foreach ($ kunder som $ kunde)
ekko "$ kunde-> navn
";

// definere banen for å lese alle kundedata fra HR -avdelingen
$ kunder = $ xml-> xpath ("/kunder/kunde [@avdeling = 'hr']");
// Skriv ut e -posten til kundene
ekko "

Kundens e -post fra HR -avdelingen:

";
foreach ($ kunder som $ kunde)
ekko "$ kunde-> e-post
";

?>

Produksjon:

Følgende utgang vises etter å ha kjørt skriptet fra serveren.

Konklusjon:

To forskjellige måter å bruke XPath () -funksjonen for å lese XML -dokumentets nodeverdier basert på den spesifikke banen eller banen med tilstanden eller banen med attributtverdien er forklart i denne opplæringen ved å bruke flere eksempler.