PHPがXMLを解析してSQL文を生成する実装方法

小云云
リリース: 2023-03-19 21:18:01
オリジナル
1795 人が閲覧しました

PHP で XML を解析する方法はたくさんあります。検索するだけでたくさんの方法が見つかります。

今日、特定の XML からノード属性を抽出し、データベース内の特定のテーブルのフィールドを更新するという要件に遭遇しました。この記事では、PHP による XML の解析と SQL ステートメントの生成方法を中心に、XML 形式ファイルの読み取り、解析、SQL 文字列の結合に関する PHP の操作スキルを紹介します。必要な方は参考にしていただければ幸いです。

アイデア:

XML を解析し、すべてのノード属性を取得します –> ノード コレクションをループし、対応する属性を取得します –> SQL 文字列を結合して配列に格納します –>文字列を指定してファイルに保存します。ここでは

xpath が使用されています。コードを記述する過程で 2 つの問題が発生しました:

1. XML の履歴パス属性が D:xx の場合、ファイルをロードできません。 .. に変更されます (Linux では区切り文字) 2. ノードの属性を取得し、::attributes を使用します。エディターは赤色のプロンプトを維持し、半日分のドキュメントを検索し、最後に ->getAttribute( ) (奇妙すぎるため、->previousSibling と ->nodeValue をサポートしていると思います)、ドキュメントによると、DOMElement::getAttribute が直接エラーを報告します。

以下はサンプルコードです:

<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 "生成完毕!";
?>
ログイン後にコピー

データはデータベーステーブルから生成されたものであるため、見つかったノードの数はテーブル内のレコードの総数です。生成後、内容が正しいかどうかを確認し、目的を達成するために SQL スクリプトを実行します。

関連する推奨事項:

SQL ステートメントを自動的に生成する方法

複数のキーワードと複数のフィールドを含む SQL ステートメントを生成する PHP 関数

PowerDesigner は Oracle をリンクして SQL ステートメントを生成します

以上がPHPがXMLを解析してSQL文を生成する実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!