Dans les applications Web modernes, la diversité des formats de données fait que les développeurs ont souvent besoin de traiter les données XML. Si les données XML sont stockées dans la base de données, nous pouvons utiliser la fonction XML_PARSE de PHP et les opérations de base de données PDO pour atteindre l'analyse et le traitement automatique. Cet article présentera ce processus en détail et comprendra des exemples de code exécutables.
Supposons que nous ayons une base de données MySQL avec un tableau nommé XML_DATA , et la structure est la suivante:
CREATE TABLE xml_data (
id INT AUTO_INCREMENT PRIMARY KEY,
xml_content TEXT NOT NULL
);
Insérons des données XML à titre d'exemple:
INSERT INTO xml_data (xml_content) VALUES
('<book><title>PHP Pratique de programmation</title><author>Zhang San</author><url>https://m66.net/books/php</url></book>');
<?php
$dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8mb4';
$username = 'db_user';
$password = 'db_pass';
try {
$pdo = new PDO($dsn, $username, $password);
$stmt = $pdo->query("SELECT xml_content FROM xml_data");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$xml = $row['xml_content'];
parseXmlWithHandler($xml);
}
} catch (PDOException $e) {
echo "La connexion de la base de données a échoué: " . $e->getMessage();
}
?>
XML_PARSE de PHP est un analyseur piloté par des événements. Avant l'utilisation, vous devez définir la fonction d'analyse et le processeur:
function parseXmlWithHandler($xmlString) {
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!xml_parse($parser, $xmlString, true)) {
echo "XML Erreur d'analyse: " . xml_error_string(xml_get_error_code($parser));
return;
}
xml_parser_free($parser);
}
function startElement($parser, $name, $attrs) {
echo "<b>Tag de démarrage:</b> $name<br>";
}
function endElement($parser, $name) {
echo "<b>Étiquette de fin:</b> $name<br>";
}
function characterData($parser, $data) {
$trimmed = trim($data);
if ($trimmed !== '') {
echo "<b>contenu:</b> $trimmed<br>";
}
}
Après avoir exécuté le script ci-dessus, la sortie sera similaire à:
Tag de démarrage:BOOK
Tag de démarrage:TITLE
contenu:PHP Pratique de programmation
Étiquette de fin:TITLE
Tag de démarrage:AUTHOR
contenu:Zhang San
Étiquette de fin:AUTHOR
Tag de démarrage:URL
contenu:https://m66.net/books/php
Étiquette de fin:URL
Étiquette de fin:BOOK