xml 知識點梳理 -- 整理自廣州傳智王老師

來源:互聯網
上載者:User
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教程有興趣的朋友有所協助。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.