PHP expat XML parser
L'analyseur Expat intégré permet de traiter les documents XML en PHP.
Qu'est-ce que XML?
XML est utilisé pour décrire les données et de se concentrer sur ce que les données sont. Un fichier XML décrit la structure des données.
Dans le langage XML, pas de balises sont prédéfinies. Vous devez définir vos propres balises.
Si vous voulez en savoir plus sur XML, s'il vous plaît visitez notre tutoriel XML .
Qu'est-ce que Expat?
Pour lire et mettre à jour - de créer et de manipuler - un document XML, vous aurez besoin d'un analyseur XML.
Il existe deux types de base de parseurs XML:
- Arbre basé sur l'analyseur: Cet analyseur transforme un document XML en une structure arborescente. Il analyse l'ensemble du document, et donne accès à des éléments de l'arborescence. par exemple, le Document Object Model (DOM)
- Basé sur des événements analyseur: Vues d'un document XML comme une série d'événements. Quand un événement spécifique se produit, il appelle une fonction pour y faire face
L'analyseur Expat est un analyseur basé sur les événements.
Basées sur les événements analyseurs concentrer sur le contenu des documents XML, et non leur structure. Pour cette raison, basées sur les événements analyseurs peuvent accéder aux données plus rapide que les analyseurs à base d'arbres.
Regardez la fraction XML suivant:
<from>Jani</from>
Un analyseur basé sur les événements ci-dessus indique le XML comme une série de trois événements:
- Début élément: à partir de
- Début de la section CDATA, la valeur: Jani
- Fermez élément: à partir de
L'exemple XML ci-dessus contient du XML bien formé. Cependant, l'exemple n'est pas du XML valide, car il n'ya pas Document Type Definition (DTD) qui lui est associée.
Toutefois, cela ne fait aucune différence lorsque vous utilisez l'analyseur Expat. Expat est un analyseur non-validant, et ignore les DTD.
Comme un événement basé sur la non-validation de l'analyseur XML, Expat est rapide et léger, et un match parfait pour les applications web PHP.
Remarque: les documents XML doivent être bien formé ou Expat va générer une erreur.
Installation
Les fonctions XML analyseur Expat font partie du coeur de PHP. Il n'y a pas d'installation nécessaire pour utiliser ces fonctions.
Un fichier XML
Le fichier XML ci-dessous sera utilisé dans notre exemple:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Initialisation de l'analyseur XML
Nous voulons pour initialiser l'analyseur XML en PHP, de définir certains des gestionnaires pour différents événements XML, puis analyser le fichier XML.
Exemple
<?php
//Initialize the XML parser
$parser=xml_parser_create();
//Function to use at the start of an 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: ";
}
}
//Function to use at the end of an element
function stop($parser,$element_name)
{
echo "<br />";
}
//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}
//Specify element handler
xml_set_element_handler($parser,"start","stop");
//Specify data handler
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen("test.xml","r");
//Read data
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)));
}
//Free the XML parser
xml_parser_free($parser);
?>
//Initialize the XML parser
$parser=xml_parser_create();
//Function to use at the start of an 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: ";
}
}
//Function to use at the end of an element
function stop($parser,$element_name)
{
echo "<br />";
}
//Function to use when finding character data
function char($parser,$data)
{
echo $data;
}
//Specify element handler
xml_set_element_handler($parser,"start","stop");
//Specify data handler
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen("test.xml","r");
//Read data
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)));
}
//Free the XML parser
xml_parser_free($parser);
?>
La sortie du code ci-dessus sera:
-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!
Comment cela fonctionne:
- Initialiser l'analyseur XML avec le xml_parser_create () la fonction
- Créer des fonctions à utiliser avec les gestionnaires d'événements différents
- Ajouter le xml_set_element_handler () pour spécifier quelle fonction sera exécutée lorsque l'analyseur rencontre des balises d'ouverture et de fermeture
- Ajouter le xml_set_character_data_handler () pour spécifier quelle fonction doit s'exécuter lorsque l'analyseur rencontre des données de caractère
- Analyser le fichier "test.xml" avec le xml_parse () la fonction
- Dans le cas d'une erreur, ajoutez xml_error_string () pour convertir une erreur XML pour une description textuelle
- Appelez le xml_parser_free () pour libérer la mémoire allouée à la xml_parser_create () la fonction
Parser Expat Plus PHP
Pour plus d'informations sur les fonctions PHP Expat, visitez notre référence PHP XML Parser.
I have read so many articles or reviews about the blogger lovers however this piece of writing is actually a pleasant
ReplyDeletearticle, keep it up.
Also visit my web site ... nail fungus treatment
Hi there! This blog post couldn't be written any better! Reading through this article reminds me of my previous roommate! He continually kept talking about this. I am going to forward this article to him. Pretty sure he's going to have
ReplyDeletea good read. Many thanks for sharing!
Also visit my weblog :: hardwood flooring
Usually I don't learn article on blogs, however I wish to say that this write-up very compelled me to try and do it! Your writing style has been surprised me. Thanks, very great article.
ReplyDeleteAlso visit my page - discount hardwood floor
It's going to be end of mine day, except before end I am reading this wonderful post to increase my experience.
ReplyDeleteHave a look at my web blog: hardwood floors
Fantastic beat ! I wish to apprentice even as you amend your web site, how could i subscribe for a weblog site?
ReplyDeleteThe account aided me a appropriate deal. I had been a little bit acquainted of this your broadcast offered bright clear
idea
Also visit my blog post ... phoenix maid service
Greetings! Very useful advice within this article!
ReplyDeleteIt's the little changes that make the biggest changes. Many thanks for sharing!
Check out my webpage; phoenix house cleaning
I always used to study paragraph in news papers but now as I am a user of internet therefore from now I am using net for content, thanks to
ReplyDeleteweb.
hardwood flooring
My webpage ... hardwood floor
You're so interesting! I don't suppose I've truly read through anything like that before. So wonderful to discover another person with unique thoughts on this subject. Seriously.. many thanks for starting this up. This website is something that's
ReplyDeleteneeded on the internet, someone with some originality!
Here is my webpage ... provillus for women
my web site :: provillus information
Do you mind if I quote a few of your posts as long as I
ReplyDeleteprovide credit and sources back to your webpage? My website is in the exact
same niche as yours and my users would certainly benefit from a lot of
the information you present here. Please let me know if this okay with you.
Appreciate it!
Take a look at my homepage ... http://www.flooranddecoroutlets.com/glass.html
What's up to every one, since I am truly keen of reading this web site's post to be updated regularly.
ReplyDeleteIt contains fastidious data.
Have a look at my site; Sac Louis Vuitton Pas Cher
If some one needs to be updated with newest technologies after that
ReplyDeletehe must be pay a visit this web page and be up to
date every day.
My web blog ... http://slc-wireless.com/
Aw, this was an incredibly good post. Finding the time and actual effort to generate a really good article… but what
ReplyDeletecan I say… I procrastinate a lot and never seem to get anything done.
my web page :: Louis Vuitton Handbags
Incredible! This blog looks just like my old one! It's on a totally different topic but it has pretty much the same page layout and design. Wonderful choice of colors!
ReplyDeleteFeel free to surf to my web-site; More hints
I'm not sure why but this website is loading extremely slow for me. Is anyone else having this problem or is it a issue on my end? I'll check back
ReplyDeletelater and see if the problem still exists.
Here is my web page Tory Burch Handbags
Oh my goodness! Amazing article dude! Many thanks, However
ReplyDeleteI am encountering problems with your RSS. I don't understand the reason why I am unable to subscribe to it. Is there anybody having identical RSS problems? Anyone that knows the solution will you kindly respond? Thanx!!
Also visit my homepage; NFL Cheap Jerseys
certainly like your web-site however you need to check
ReplyDeletethe spelling on quite a few of your posts. Many of
them are rife with spelling problems and I to find it very bothersome
to tell the reality however I will certainly come again again.
Look at my site :: Wholesale Jerseys Cheap
Great blog here! Also your web site loads up fast!
ReplyDeleteWhat host are you using? Can I get your affiliate link to
your host? I wish my web site loaded up as quickly as yours lol
Here is my weblog; Sac Louis Vuitton