Syntaks:
Syntaksen til xpath () -funksjonen er gitt nedenfor.
array xpath (streng $ bane)Denne funksjonen har ett argument som tar en baneverdi, og hvis banen eksisterer i en hvilken som helst 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 veiledningen.
Opprett XML-dokument:
Opprett en XML-fil med navnet Produkter.xml med følgende innhold på stedet der PHP-filen skal opprettes for å analysere denne filen.
Bruken av simplexml_load_file () funksjon:
Funksjonen xpath () med objektet opprettet av simplexml_load_file () -funksjonen har vist i denne delen av denne opplæringen.
Eksempel 1: Les de spesielle XML-nodeverdiene
Følgende eksempel viser hvordan du leser innholdet av de spesifikke nodeverdiene fra XML-dokumentet ved å definere xpath () -funksjonsstien. Objektvariabelen, $ xml er opprettet for å lese de spesifikke nodeverdiene til Produkter.xml fil. '/ PRODUKTER / PRODUKT / MERKE' brukes i xpath () for å lese alle BRAND-nodeverdier. '/ PRODUKTER / PRODUKT' brukes i xpath () for å lese alle underverdiene til barn PRODUKT noder. for hver loop brukes til å skrive ut verdiene på NAVN og PRIS noder.
// Opprett objekt for å lese XML-filen$ xml = simplexml_load_file ('produkter.xml ');
// Søk i alle BRAND-nodeverdier
$ merke = $ xml-> xpath ('/ PRODUKTER / PRODUKT / MERKE');
// Skriv ut matrixverdiene
ekko "
Listen over merkenavn er:
";foreach ($ merke som $ navn)
ekko "$ name
";
// Søk i alle PRODUKT-nodeverdier
$ produkter = $ xml-> xpath ('/ PRODUKTER / PRODUKT');
ekko "
Listen over produktnavn og pris:
";ekko "
Navn | Pris |
---|---|
$ produkt-> NAVN | $$ produkt-> PRIS |
?>
Produksjon:
Følgende utdata vises når du har kjørt skriptet fra serveren.
Eksempel 2: Les de spesielle XML-nodeverdiene basert på tilstand
Følgende eksempel viser hvordan du leser bestemte nodeverdier basert på tilstanden ved hjelp av xpath () -funksjonen. Baneverdien, '/ PRODUKTER / PRODUKT [PRIS> 600]', vil søke i verdiene til alle underordnede noder i PRODUKT node der verdien av PRIS node er mer enn 600. for hver loop brukes til å skrive ut verdiene på NAVN og PRIS noder.
// Opprett objekt for å lese XML-filen$ xml = simplexml_load_file ('produkter.xml ');
// Søk i 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 "
Navn | Pris |
---|---|
$ produkt-> NAVN | $$ produkt-> PRIS |
?>
Produksjon:
Følgende utdata vises når du har kjørt skriptet fra serveren.
Eksempel 3: Les de spesielle XML-nodeverdiene basert på attributt
Følgende eksempel viser hvordan du leser bestemte nodeverdier basert på attributtverdiene til XML-dokumentets spesifikke node ved hjelp av xpath () -funksjonen. Baneverdien, '/ PRODUKTER / PRODUKT [@ category = ”Monitor”]' vil søke i verdiene til alle barnekoder av produktet node, der kategoriattributtets verdi er Observere. for hver loop brukes til å skrive ut verdiene på MERKENAVN, og PRIS noder.
// Opprett objekt for å lese XML-filen$ xml = simplexml_load_file ('produkter.xml ');
// Søk i produktene der attributtverdien çategory er 'Monitor'
$ produkter = $ xml-> xpath ('/ PRODUCTS / PRODUCT [@ category = "Monitor"]');
ekko "
Listen over produktmerke, navn og pris basert på kategori (Monitor):
";ekko "
Merke | Navn | Pris |
---|---|---|
$ produkt-> MERKE | $ produkt-> NAVN | $$ produkt-> PRIS |
?>
Produksjon:
Følgende utdata vises når du har kjørt skriptet fra serveren.
Bruken av SimpleXMLElement klasse:
Bruken av xpath () -funksjonen ved å lage SimpleXMLElement-klasseobjektet 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 deklarert i en variabel i stedet for filen. XML-innhold er lagret i $ xml_data variabel. “/ Kunder / kunde” brukes som argumentverdien til xpath () -funksjonen for å lese alle verdiene til undernodene til kunde node. Neste, a for hver loop brukes til å skrive ut verdiene på navnet node. “/ Kunder / kunde [@ department = 'HR']" brukes som argumentverdi for en annen xpath () -funksjon for å lese alle verdiene til undernodene til kundenoden der verdien av avdeling attributt er HR. Neste, a for hver loop brukes til å skrive ut verdiene til e-post node.
$ xml_data = <<XML;
// Definer objektet for å lese XML-dataene
$ xml = ny SimpleXMLElement ($ xml_data);
// Definer vei 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
";
// Definer vei for å lese alle kundedata fra HR-avdelingen
$ kunder = $ xml-> xpath ("/ kunder / kunde [@ department = '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 utdata vises når du har kjørt skriptet fra serveren.
Konklusjon:
To forskjellige måter å bruke xpath () -funksjonen til å lese XML-dokumentets nodeverdier basert på den spesifikke banen eller banen med tilstanden eller banen med attributtverdi, er forklart i denne veiledningen ved å bruke flere eksempler.