首頁 >後端開發 >php教程 >php解析xml並產生sql語句的實作方法

php解析xml並產生sql語句的實作方法

小云云
小云云原創
2018-02-05 09:17:551846瀏覽

php解析xml有很多種辦法,文件中有,搜尋一下就一大把的。

今天遇到一個需求:將某個xml中的節點屬性提取出來,然後更新資料庫某一表中的欄位。本文主要和大家介紹了php實作解析xml並產生sql語句的方法,涉及php針對xml格式檔案的讀取、解析及sql字串拼接相關操作技巧,需要的朋友可以參考下,希望能幫助到大家

想法:

解析XML,取得所有的節點屬性–> 循環節點集合,取得對應的屬性–> 拼接sql字串存入一數組– > 將陣列轉為字串保存於某一檔案中

這裡使用了xpath,在寫程式碼的過程中遇到兩個問題:

1、xml的史路徑屬性為D:\xx\…時load不了文件,改為”/”(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語句的方法

#PHP多關鍵字、多字段產生SQL語句的函數

PowerDesigner連結Oracle產生sql語句

以上是php解析xml並產生sql語句的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn