Rezultate pentru tag: fractie
PHP XML Expat Parser
PHP XML Expat Parser
Analizatorul (parser) XML Expat integrat permite procesarea documentelor XML în PHP.
Analizatorul (parser) XML Expat
Analizatorul (parser) Expat este un analizator (parser) bazat pe evenimente.
Priviți următoarea fracție XML:
<from>Ioana</from>
Un analizator bazat pe evenimente (event-based parser) raportează XML-ul de mai sus ca o serie de trei evenimente:
Start element: from
Start CDATA section, value: Ioana
Close element: from
Funcțiile XML Expat Parser fac parte din nucleul PHP. Nu este necesară instalarea pentru a utiliza aceste funcții.
Fișierul XML
Fișierul XML „note.xml” va fi utilizat în exemplul de mai jos:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>
Inițializarea analizatorului XML Expat (XML Expat Parser)
Vrem să inițializăm XML Expat Parser în PHP, să definim unii manageri pentru diferite evenimente XML, apoi să analizăm fișierul XML.
<?php
// Inițializați analizatorul XML (XML parser)
$parser=xml_parser_create();
// Funcție de utilizat la începutul unui element
function start($parser,$element_name,$element_attrs) {
switch($element_name) {
case "NOTE":
echo "-- Note --<br>";
break;
case "TO":
echo "To: ";
break;
case "FROM":
echo "From: ";
break;
case "HEADING":
echo "Heading: ";
break;
case "BODY":
echo "Message: ";
}
}
// Funcție de utilizat la sfârșitul unui element
function stop($parser,$element_name) {
echo "<br>";
}
// Funcție de utilizat la găsirea datelor de tip caracter
function char($parser,$data) {
echo $data;
}
// Specificați elementul handler
xml_set_element_handler($parser,"start","stop");
// Specificați gestionarul de date (data handler)
xml_set_character_data_handler($parser,"char");
// Deschideți fișierul XML
$fp=fopen("note.xml","r");
// Citiți datele
while ($data=fread($fp,4096)) {
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// Eliberați analizatorul XML (XML parser)
xml_parser_free($parser);
?>
PHP XML DOM Parser
PHP XML DOM Parser
Analizatorul DOM încorporat (built-in DOM parser) face posibilă procesarea documentelor XML în PHP.
Analizatorul XML DOM
Analizatorul DOM (DOM parser) este un analizator bazat pe arbori (tree-based parser).
Priviți următoarea fracție document XML (XML document fraction):
<?xml version="1.0" encoding="UTF-8"?>
<from>Ioana</from>
DOM vede XML-ul de mai sus ca o structură de arbore (tree structure):
Nivelul 1: Document XML
Nivelul 2: Elementul rădăcină: <de la>
Nivelul 3: Element text: "Ioana"
Instalare
Funcțiile analizatorului DOM (DOM parser) fac parte din nucleul PHP. Nu este necesară instalarea pentru a utiliza aceste funcții.
Fișierul XML
Fișierul XML de mai jos („note.xml”) va fi utilizat în exemplul nostru:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>
XML de încărcare și ieșire (Load and Output XML)
Vrem să inițializăm analizatorul XML (XML parser), să încărcăm xml-ul și să îl scoatem:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>
Rezultatul codului de mai sus va fi:
Popescu Ioana Reminder Nu uita de mine în acest weekend!
Dacă selectați „View source” în fereastra browserului, veți vedea următorul HTML:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>
Buclă prin XML (Looping through XML)
Vrem să inițializăm analizatorul XML, să încărcăm XML și să ne buclăm (loop) prin toate elementele elementului <note>:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) {
print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>
Rezultatul codului de mai sus va fi:
#text =
to = Popescu
#text =
from = Ioana
#text =
heading = Reminder
#text =
body = Nu ma uita in acest weekend!
#text =
În exemplul de mai sus vedeți că există noduri de text goale (empty text nodes) între fiecare element.
Când XML generează, conține adesea spații albe (white-spaces) între noduri. Analizatorul XML DOM (XML DOM parser) tratează acestea ca elemente obișnuite și, dacă nu sunteți conștienți de ele, uneori provoacă probleme.