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='content-type' content='text/html; charset=utf-8' /> <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='tip_info'>总共找到:<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.'--'.$name.'--'.$inf."</p>"; $idx++; array_push($arr, "update dress_item t SET t.s_name='".$name."',t.s_intro='".$inf."' 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 ステートメントを生成する PHP 関数PowerDesigner は Oracle をリンクして SQL ステートメントを生成します以上がPHPがXMLを解析してSQL文を生成する実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。