標籤:margin innerhtml name on() php str 區分 解析 play
XML:eXtensible Markup Language,可擴充的標籤語言,本身是一種字串格式,用於描述批量複合資料,
文法特點:
(1)所有的資料放在標籤中
(2)整個XML字串有且只能有一個根標籤
(3)所有的標籤名都可以自訂,但嚴格區分大小寫,且開始和結束標記必須完全一樣
(4)每個標籤都可以自訂屬性,屬性必須有值,值必須用單引號/雙引號括起來
(5)每個標籤都可以定義任意的子標籤,標籤可以嵌套,但不能交叉
注意:HTML和XML的區別
HTML文法隨意;XML文法嚴格;
HTML標籤預定義好了;XML標籤都是自訂的;
HTML用於描述網頁的結構;XML標籤用於描述資料;
下面是一段我們需要用來攜帶資料資訊的XML,接下來我們要通過PHP構建XML格式的資料
<?xml version="1.0" encoding="UTF-8" ?> <productlist><product pid="101"><pname>三星</pname><price>35.50</price><pic>1.jpg</pic></product><product pid="102"><pname>閃迪</pname><price>45.50</price><pic>2.jpg</pic></product><product pid="103"><pname>金士頓</pname><price>30.50</price><pic>3.jpg</pic></product></productlist>
PHP構建XML結構資料並響應
<?phpheader(‘Content-Type:application/xml‘);$conn = mysqli_connect("127.0.0.1","root","","dangdang",3306);$sql = "SET NAMES UTF8";mysqli_query($conn,$sql);$sql = "SELECT * FROM book";$result = mysqli_query($conn,$sql);$list = mysqli_fetch_all($result,MYSQLI_ASSOC);$str = "<?xml version=‘1.0‘ encoding=‘UTF-8‘ ?>";$str .= "<productlist>";foreach($list as $b){$str .= "<product pid=‘$b[bid]‘><pname>$b[bname]</pname><price>$b[price]</price><pic>$b[pic]</pic></product>";}$str .= "</productlist>";echo $str;
接收XML並解析 因為XML屬於XMLDOM對象 只能使用核心DOM方法進行解析
<!doctype html><html> <head> <meta charset="UTF-8"> <title>...</title> <style>#btLoadMore{display:block;width:100%;margin: 20px auto;padding:5px;} </style> </head> <body><table width="100%" border="1"><thead><tr><th>編號</th><th>名稱</th><th>價格</th><th>圖片</th></tr></thead><tbody id="tbodyList"><tr><td colspan="4"></td></tr></tbody></table><button id="btLoadMore">載入更多</button><script type="text/javascript">btLoadMore.onclick = function(){var xhr = new XMLHttpRequest();xhr.onreadystatechange = function(){if(xhr.readyState===4){if(xhr.status==200){doResponse(xhr);}else{alert("響應完成但有問題");}}}xhr.open("GET","book_select.php",true);xhr.send(null);function doResponse(xhr){var list= xhr.responseXML.querySelectorAll("product");//console.log(list);var frag = "";for(var i = 0 ; i<list.length ; i++){var b = list[i];var id = b.getAttribute("bid");var bn = b.querySelector("pname").innerHTML;var pr = b.querySelector("price").innerHTML;var pc = b.querySelector("pic").innerHTML;console.log(pc);frag+=`<tr> <td>${bn}</td> <td>${pr}</td> <td>${pc}</td> <tr>`;}tbodyList.innerHTML=frag;}}</script> </body></html>
使用原生AJAX和PHP 構建和解析XML格式的資料