今回は、phpがxmlを解析してsqlステートメントを生成する手順について詳しく説明します。phpがxmlを解析してsqlステートメントを生成するための注意事項は何ですか。実際のケースを見てみましょう。
PHP で XML を解析する方法はたくさんあり、ドキュメントにたくさんありますので、検索してください。 今日、特定の XML からノード属性を抽出し、データベース内の特定のテーブルのフィールドを更新するという要件に遭遇しました。アイデア:
XML を解析し、すべてのノード属性を取得します –> ノード コレクションをループし、対応する属性を取得します –> SQL 文字列を結合し、配列に格納します –>文字列を指定してファイルに保存します。ここでは xpath が使用されています。コードを記述する過程で 2 つの問題が発生しました: 1. XML の履歴パス属性が D:xx... の場合、ファイルを保存できません。ロードされ、区切り文字「/」に変更されます) 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 "生成完毕!"; ?>データはデータベーステーブル Generated from からのものであるため、見つかったノードの数はテーブル内のレコードの総数です。生成後、内容が正しいかどうかを確認し、目的を達成するために SQL スクリプトを実行します。 この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 推奨読書:
phpとjsでローカルexeアプリケーションを開くときにパラメータを渡す手順の詳細な説明
PHPクラスリフレクションを使用して依存性注入を実装する手順の詳細な説明
以上がPHP が XML を解析して SQL ステートメントを生成する手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。