PHP XML DOM
- Föregående sida XML Expat Parser
- Nästa sida XML SimpleXML
Inbyggda DOM-parser gör det möjligt att hantera XML-dokument i PHP.
Vad är DOM?
W3C DOM tillhandahåller en standardmängd objekt för HTML och XML-dokument samt standardgränssnitt för att komma åt och manipulera dessa dokument.
W3C DOM är uppdelat i olika delar (Core, XML och HTML) och olika nivåer (DOM Level 1/2/3):
- Core DOM - Definierar en standardmängd objekt för alla strukturerade dokument
- XML DOM - Definierar en standardmängd objekt för XML-dokument
- HTML DOM - Definierar en standardmängd objekt för HTML-dokument
Om du vill lära dig mer om XML DOM, besök vår XML DOM-lär.
XML-parser
För att läsa och uppdatera - skapa och hantera - ett XML-dokument behöver du en XML-parser.
Det finns två grundläggande typer av XML-parserar:
- Trädbaserad parser
- Händelsesbaserad parser
DOM-parser är en trädbaserad parser.
Se följande fragment av XML-dokumentet nedan:
<?xml version="1.0" encoding="ISO-8859-1"?> <from>John</from>
XML DOM ser XML som en trädstruktur:
- Nivå 1: XML-dokument
- Nivå 2: Rotnod: <from>
- Nivå 3: Textelement: "John"
Installera
DOM XML-parsern är en del av PHP-kärnan. Det är inte nödvändigt att installera för att använda dessa funktioner.
XML-fil
Vi kommer att använda följande XML-fil i vårt exempel:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Påminnelse</heading> <body>Glöm inte mötet!</body> </note>
Ladda och skriva ut XML
Vi behöver initialisera XML-parsern, ladda XML och skriva ut den:
Exempel
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml"); print $xmlDoc->saveXML(); ?>
Uppgiften från ovan gav följande utdata:
George John Påminnelse Glöm inte mötet!
Om du tittar på källkoden i webbläsarfönstret, kommer du att se följande HTML:
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>George</to> <from>John</from> <heading>Påminnelse</heading> <body>Glöm inte mötet!</body> </note>
I det ovanstående exemplet skapades en DOMDocument-objekt och lade XML från "note.xml" in i detta dokumentobjekt.
saveXML()-funktionen lägger in den interna XML-dokumentet i en sträng, så att vi kan skriva ut det.
Iterera XML
Vi ska initiera XML-parseraren, ladda XML och iterera över alla element inom <note>-elementen:
Exempel
<?php $xmlDoc = new DOMDocument(); $xmlDoc->load("note.xml"); $x = $xmlDoc->documentElement; foreach ($x->childNodes AS $item) { print $item->nodeName . " = " . $item->nodeValue . "<br />"; } ?>
Uppgiften från ovan gav följande utdata:
#text = to = George #text = from = John #text = heading = Påminnelse #text = body = Glöm inte mötet! #text =
I det ovanstående exemplet ser du att det finns tomma textnoder mellan varje element.
När XML genereras, innehåller det ofta blanka tecken mellan noder. XML DOM-parserar dessa som vanliga element, och om du inte noterar dem kan det ibland uppstå problem.
Om du vill lära dig mer om XML DOM, besök vår XML DOM-lär.
- Föregående sida XML Expat Parser
- Nästa sida XML SimpleXML