首頁  >  文章  >  後端開發  >  php實作解析xml並產生sql語句步驟詳解

php實作解析xml並產生sql語句步驟詳解

php中世界最好的语言
php中世界最好的语言原創
2018-05-19 10:44:461602瀏覽

這次帶給大家php實作解析xml並產生sql語句步驟詳解,php實作解析xml並產生sql語句的注意事項有哪些,以下就是實戰案例,一起來看一下。

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

今天遇到一個需求:將某個xml中的節點屬性提取出來,然後更新資料庫某一表中的欄位。

想法:

解析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.'--'.$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腳本便達到目的了。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

php與js開啟本地exe應用程式傳遞參數步驟詳解

PHP類別反射實作依賴注入步驟詳解

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

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