xml知識小結
xml的結構
文檔聲明:
元素:(標籤 標記)
元素屬性
一個元素可以有多個屬性
屬性值一定要用引號(單引號或雙引號)引起來
屬性名稱的命名規範與元素的命名規範相同
元素中的屬性是不允許重複的
標籤屬性所代表的資訊也可以被改成用子項目的形式來描述
處理指示
必須以“作為開頭,以“?>”作為結尾
xml指令
xml-stylesheet指令
例:
注釋:
注釋可以在瀏覽器中顯示
XML聲明之前不能有注釋,注釋不能嵌套
CDATA區段
文法:
</p><p>內容</p><p>
xml DTD 文檔約束
約束文檔定義了xml允許出現的元素名稱 、屬性 、 以及元素出現順序等
DTD 約束文檔分類
內部 DTD
根項目 [
DTD 約束
]>
外部DTD
根項目 SYSTEM “外部DTD 的路徑”>
公用DTD
根項目 PUBLIC “DTD標識名” “公用DTD的URI”>
DTD約束編寫
定義元素(標記或是標記)
元素名 元素類型>
元素類型
(#PCDATA) :該類型包含任何字元資料,不能含有子項目
EMPTY: 該類型不能含有子項目或是文本,可以有屬性
ANY : 該元素包含所以內容(適用於根項目)
(子項目) :定義子項目只能出現一次
(子項目1,子項目2, ...) : 元素按規定的 名稱及 順序出現
(子項目+) : 當前元素出現 1+ 次
(子項目*) : 當前元素出現 0+ 次
(子項目?) : 當前元素查詢 0 或 1 次
(子項目1 | 子項目2 ) : 互斥元素 ,只能選一
定義屬性
基本文法:
元素名稱 屬性名稱 屬性類型 預設值 >
屬性類型
CDATA :字元或是數字(文本類型)
(en1|en2|en....) :枚舉類型
ID : 屬性唯一
IDREF :引用已定義的ID屬性
#REQUIRED :必填 (預設值)
#IMPLIED :可選
#FIXED :固定值
值 :直接使用預設值
定義實體
引用實體
基本文法:
實體名稱 “實體的值”>
引用文法: [在xml中使用]
&實體名;
參數實體 [參數實體必須在外部DTD中定義,在外部dtd中使用]
基本文法:
實體名稱 “實體的值”>
引用文法:
%實體名;
PHP解析 XML 資料
PHP DOM 模型解析 XNL
PHP DOM 類
DOMDocument : 文檔類
DOMNodeList : 節點列表類
DOMNode : 節點類
DOMElement : 節點類
DOMDocument類:
基本文法:
DOMDocument::__construct( string $version , string $encoding ){}
load 方法的使用
domdocument_obj->load ( ‘xml_filename.xml’ ) ;
item方法的使用:
domdocument_obj -> item(int index );
案例:PHP DOM查詢操作
【1】開闢記憶體空間形成”面”
$dom = new DOMDocument(‘1.0’,’utf-8’);
【2】載入xml檔案到記憶體,形成dom樹
$dom->load( ‘test.xml’ );
【3】擷取同級兄弟節點,形成串
$names = $dom->getElementsByTagName(‘元素名字’);
【4】擷取節點名稱為王大鎚的name節點資訊,所謂的點
$name = $names -> nodeValue;
以上代碼簡化:
$dom->getElementsByTageName(‘name’)->item(0)->nodeValue;
PHP DOM 屬性操作
#判斷某個節點是否具有指定的屬性
bool DOMElement::hasAttribute(string $name);
#判斷某個節點是否有指定的屬性
bool DOMNode:: hasAttributes(void);
#擷取某個節點的指定屬性的值
string DOMElement::getAttribute(string $name);
PHP DOM 的增刪改查操作
PHP DOM 增操作:
建立新節點的方法:
DOMDocument :: createElement(string name [ ] );
追加新節點:
DOMDocument :: appendChild( DOMNode $newnode);
儲存操作:
DOMDocument :: saveXML( filename);
PHP DOM 刪操作:
移除節點操作:
DOMNode :: removeChild( DOMNode $nodeName ) ;
PHP DOM 改操作:
更新節點操作:
/**
*@param string $newNode 更新的節點
* @param string $oldNode 舊的節點
*/
DOMNode :: replaceChild( DOMNode $newNode , DOMNode $oldNode ) ;
PHP DOM 屬性操作:
為節點添加屬性:
/**
*@param string 要添加屬性的名字
* @param string 屬性的值
*/
setAttribute(string $name , string $value );
更新節點屬性:
/**
*@param string 要更新的屬性的名字
* @param string 屬性的值
*/
setAttribute ( string $name , string $value ) ;
移除指定節點的屬性:
/**
*@param string 要刪除的屬性名稱字
*/
removerAttribute( string $name );
simpleXML 解析XML
讀取xml資料
基本文法:
/*
* @param string $filename 要載入的xml 檔案名稱
*/
simpleXMLElement simplexml_load_file(string $filename) ;
/**
*@param string $str 已經定義好的xml字元內容
*/
simpleXMLElement simplexml_load_string(string $str ) ;
查詢xml資料
通過children()方法擷取xml資料
通過foreach() 方法擷取
通過 $xml->result[0]->nodeName 直接擷取
xml 元素的添加
/**
* @param string $name 有添加的元素的名字
* @param string $value 設定值
*/
SimplexmlElement::addChild(string $name [,string $vaule]);
#添加完成後,要進行儲存
/**
* @param string $filename 儲存的xml檔案名稱
*/
simpleXMLElement :: asXML(string $filenmae );
xml 屬性的查詢
/**
* @param string attr_name 一添加的屬性的名字
*/
SimpleXMLElement :: attributes()->attr_name;
xml 屬性的添加
/**
* @param string $name 要添加的屬性名稱
* @param string $value 屬性值
*/
smpleXMLElement::addtribute( string $name , [string $value [,string $namespace ]]
Xpath 查詢xml資料
絕對路徑
相對路徑 //
星號 * 查詢指令
中括號運算式
@屬性
以上就介紹了xml 知識點梳理 -- 整理自廣州傳智王老師,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。