Maison  >  Article  >  développement back-end  >  Méthode d'implémentation de l'analyse PHP du XML et de la génération d'une instruction SQL

Méthode d'implémentation de l'analyse PHP du XML et de la génération d'une instruction SQL

小云云
小云云original
2018-02-05 09:17:551727parcourir

Il existe de nombreuses façons d'analyser XML en PHP. Il existe de nombreuses méthodes dans la documentation, et vous pouvez toutes les trouver simplement en effectuant une recherche.

J'ai rencontré une exigence aujourd'hui : extraire les attributs du nœud d'un certain XML, puis mettre à jour un champ dans une table de la base de données. Cet article vous présente principalement la méthode d'analyse PHP du XML et de génération d'instructions SQL. Cela implique les compétences opérationnelles de PHP liées à la lecture, à l'analyse et à l'épissage des chaînes SQL des fichiers au format XML. J'espère que cela pourra vous aider.

Idée :

Analysez le XML et obtenez tous les attributs du nœud–> Parcourez la collection de nœuds et obtenez les attributs correspondants–> stockez-le dans un tableau– > Convertissez le tableau en chaîne et enregistrez-le dans un fichier

Xpath est utilisé ici Deux problèmes ont été rencontrés lors du processus d'écriture du code :

1. . L'attribut du chemin d'historique de xml Le fichier ne peut pas être chargé lorsqu'il est D:xx..., il suffit de le remplacer par "/" (le délimiteur sous Linux)

2. Récupérer les attributs d'un nœud, utilisez ::attributes, et l'éditeur s'arrêtera. Invite rouge, trouvera le document d'une demi-journée et enfin utiliser ->getAttribute() (je suppose que, parce que c'est trop étrange, il prend en charge ->previousSibling et ->nodeValue ). Selon le document, DOMElement::getAttribute est directement Une erreur a été signalée..

Voici un exemple de code :


<title>xml 转换为 sql</title>
<meta http-equiv=&#39;content-type&#39; content=&#39;text/html; charset=utf-8&#39; />
<style type="text/css">
  .tip_info {margin-bottom:10px;}
  .tip_info span {color:#f00;}
</style>
<?php
$xml = "D:/res/dressConfig.xml";
$doc = new DOMDocument();
$doc->load($xml);
$xpath = new DOMXPath($doc);
$query = "//i";
$entries = $xpath->query($query);
$len = $entries->length;
echo "<p class=&#39;tip_info&#39;>总共找到:<span>".$len."</span>个节点</p>";
$arr = array();
$idx = 0;
while ($idx < $len) {
  $nodeItem = $entries->item($idx);
  $id = $nodeItem->getAttribute("i");
  $name = $nodeItem->getAttribute("n");
  $inf = $nodeItem->getAttribute("inf");
//  echo "<p>".$id.&#39;--&#39;.$name.&#39;--&#39;.$inf."</p>";
  $idx++;
  array_push($arr, "update dress_item t SET t.s_name=&#39;".$name."&#39;,t.s_intro=&#39;".$inf."&#39; WHERE t.n_doid=".$id.";");
}
$dir = "d:/sql/";
if (!is_dir($dir)) {
  mkdir($dir);
}
file_put_contents("d:/sql/dress_item.sql", implode("\n\r", $arr));
echo "生成完毕!";
?>

Étant donné que les données sont générées à partir de la table de la base de données, le nombre de nœuds trouvés correspond au nombre total d'enregistrements dans la table. Après la génération, vous pouvez vérifier si le contenu est correct, puis exécuter le script SQL pour atteindre l'objectif.

Recommandations associées :

Méthode pour générer automatiquement des instructions SQL

Fonction PHP multi-mots-clés et multi-champs pour générer des instructions SQL

PowerDesigner lie Oracle pour générer des instructions SQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn