- PHP 5.0 realizuje dostęp do XML poprzez SimpleXML. Inny tutorial o tablicach (http://www.motov.biz/php/php-arrays-the-ultimate-guide.html) i funkcjach. Do XML można podejść dwojako:
- SAX - czytać cześciowo dokument XML i uruchamiać specjalne funkcje użytkownika po napotkaniu interesującego nas węzła (callback)
- DOM - czytanie (bardzo rozrzutne) całego dokumentu do pamięci z zbudowanie drzewka odzwierciedlającego hierarchię dokumentu
- W PHP 5.0 wzięto na tapetę implementację biblioteki w C++ zwanej libxml2. Dodatkowe rozszerzenia zrobili: Sterling Hughes, Rob Richards and Marcus Börger.
- Duży wkład w prace nad zunifikowanym DOM - http://dean.edwards.name/weblog/
- Przykład:<?php
// set name of XML file
$file = "pet.xml";
// load file
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");
// access XML data
echo "Name: " . $xml->name . "n";
echo "Age: " . $xml->age . "n";
echo "Species: " . $xml->species . "n";
echo "Parents: " . $xml->parents->mother . " and " . $xml->parents->father . "n";
?> - Modyfikacja:$xml->name = "Sammy Snail";
$xml->age = 4;
$xml->species = "snail";
$xml->parents->mother = "Sue Snail";
$xml->parents->father = "Sid Snail";
// write new data to file
file_put_contents($file, $xml->asXML()); - Inny przykład, operacja na atrybutach:<?php
// create XML string
$str = <<< XML
<?xml version="1.0"?>
<shapes>
<shape type="circle" radius="2" />
<shape type="rectangle" length="5" width="2" />
<shape type="square" length="7" />
</shapes>
XML;
// load string
$xml = simplexml_load_string($str) or die ("Unable to load XML string!");
// for each shape
// calculate area
foreach ($xml->shape as $shape) {
if ($shape['type'] == "circle") {
$area = pi() * $shape['radius'] * $shape['radius'];
}
elseif ($shape['type'] == "rectangle") {
$area = $shape['length'] * $shape['width'];
}
elseif ($shape['type'] == "square") {
$area = $shape['length'] * $shape['length'];
}
echo $area."n";
}
?> - Można stosować XPath:
<?php
// set name of XML file
$file = "ingredients.xml";
// load file
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");
// get all the <desc> elements and print
foreach ($xml->xpath('//item[quantity > 1]/desc') as $desc) {
echo "$descn";
}
?>
niedziela, października 21, 2007
XML i PHP:
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz