xml大多用來儲存資料,本文主要和大家分析php中xml操作執行個體方法,希望能協助到大家。
本文
入門案例
<?xml version="1.0" encoding="utf-8" ?><stu><name>draymonder</name></stu>
處理特殊字元
<imgs><![CDATA[$<$$#@>]]></imgs>CDATA的基本文法<![CDATA[內容]]>面試題: 如何使用xml檔案來傳遞,儲存一個圖片答: 使用程式先讀入到記憶體然後儲存到xml的<![CDATA[檔案內容]]>中
xml的PI處理指示
通過PI指令來引入CSS樣式檔案:PI指令的弊端: 只對英文的標籤起作用,對中文的標籤不起作用。 //和html引用css大同小異<?xml-stylesheet type="text/css" href="txt.css"?> //txt.css內容name{ background-color:red;}age{ background-color:green;}
dtd (Document Type Definition
為了約束xml檔案,使xml語義合法
dtd詳解
基本文法<!ELEMENT 元素名 類型> //元素約束<!ATTLIST 元素名> //屬性約束<!ENTITY 元素名 "引用內容"> //用元素名來表示引用的內容
phpDom快速入門
$xmldoc = new DomDocument();$xmldoc->load("test.xml");//讀檔案的時候用load方法//讀字串的時候用 loadXML方法 //eg: $xmldoc->loadXML('<root><node/></root>');//找到root節點$nodeLists=$xmldoc->getElementsByTagName("stu"); //返回的是結果集合 $nodeList = $nodeLists->item(0); //上面直接就已經找到root節點了//新增name節點$node_name = $xmldoc->createElement("name");$node_name->nodeValue = "我喜歡你";//新增age節點$node_age = $xmldoc->createElement("age");$node_age->nodeValue = "20";//root節點下掛載 name節點和age節點$root->appendChild($node_name); $root->appendChild($node_age);//記憶體中修改完畢以後 還要儲存檔案內容$xmldoc->save("test.xml");//刪除操作$test->parentNode->removeChild($test);//更新操作找到那個需要修改的節點 直接改 nodeValue屬性就可以//設定屬性setAttribute (string $name ,string $value) 添加屬性為$name 屬性值$value的屬性
xpath
php dom技術可以跨層取出,但是不能保持層次關係,使用xpath可以解決
這種技術相當於是知道節點所在的層級,然後通過層級關係來找相應的節點$xmldoc = new DOMDocument();$xmldoc->load("test.xml");$xpath = new DOMXPath($xmldoc);$node_list = $xpath->query("/stu");echo $node_list->length;
SimpleXML
以物件導向方式來操作xml檔案
//裝載檔案$stu = simplexml_load_file("test.xml");$name = $stu->name;var_dump($name);foreach ($name as $value) { echo "$value <br>";}//還有裝載方式從DOM對象simplexml_import_dom//裝載字串simplexml_load_string
超連結統一開啟問題
<head> <base target="_blank"></head>