PHP XML DOM

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.