但佔用的記憶體量較大,不太適合處理太大的XML文件
windows版本DOM模組已預設有效
linux則還要另外做一些準備設定
使用物件的建立
$doc = new DOMDocument([版本][,文字編碼]);
$doc = new DOMDocument("1.0","utf-8");
$doc = new DOMDocument();
屬性
$doc->formatOutput=false; //輸出時是否格式化(預設:false)
$doc->validateOnParse=false; //解析時是否驗證文件的正確性(預設:false)
$doc->resolveExternals=false; //是否在解析時解開文件外部的定義(預設:false)
$doc->preserveWhiteaSpace=true; //要保留空白字元碼嗎(預設:true)
$doc->substituteEntities=false; //要取代實體參照嗎(預設:false)
$doc->strictErrorChecking=true; //要進行嚴格的錯誤檢查嗎(預設:false)
方法
$doc->load(檔名); //文件載入DOM Tree
$doc->loadXML(字串); //字串載入DOM Tree
$doc->save(檔名); //DOM Tree內容儲存到XML檔案
$doc->saveXML(); //DOM Tree內容以XML字串傳回
屬性(可以取得DOM Tree各種節點物件)
DOMNode = DOMNode->parent_node //上個節點
DOMNode = DOMNode->firstChild //第一個子節點
DOMNode = DOMNode->lastChild //最後一個子節點
DOMNode = DOMNode->previousSibling //上一個兄弟節點
DOMNode = DOMNode->nextSibling //下一個兄弟節點
DOMDocument = DOMNode->ownerDocument //根節點
DOMNodeList = DOMNode->childNodes //所有子節點
DOMNamedNodeMap = DOMNode->attributes //所有屬性
DOMDocumentType = DOMDocument->doctype //文件類型
DOMElement = DOMDocument->documentElement //文件元素
DOMElement = DOMAttr->ownerElement //這屬性屬於的元素
方法
DOMNode = DOMNodeList->item(索引); //第一個索引值0
DOMNode = DOMNode->insertBefore(新節點,子節點) //插入節點
DOMNode = DOMNode->appendChile(新節點) //新增節點
DOMNode = DOMNode->replaceChild(現有節點,新節點) //取代節點
DOMNode = DOMNode->removeChild(子節點) //刪除節點
DOMNodeList = DOMDocument->getElementsById(ID) //從ID屬性的值取得元素節點
DOMNodeList = DOMDocument->getElementsByTagName(標籤名) //從標籤名稱取得元素節點
DOMNodeList = DOMElement->getElementsByTagName(標籤名) //從標籤名稱取得元素節點
屬性(可以取得資訊)
DOMNode->nodeName //節點名稱
DOMNode->nodeValue //節點的值
DOMNode->nodeType //節點類型
DOMNode->textContent //節點內容的文字表示
DOMNodeList->length //節點列的長度
DOMDocument->documentURI //XML文件的位置
DOMDocument->encoding //XML宣告的encoding屬性值
DOMDocument->standalone //XML宣告的standalone屬性值
DOMDocument->version //XML宣告的version屬性值
DOMDocument->tagName //元素的標籤名
DOMAttr->name //屬性名稱
DOMAttr->value //屬性值
範例
讀取XML
<?php $doc = new DOMDocument(); $doc->load( 'books.xml' ); $books = $doc->getElementsByTagName( "book" ); foreach( $books as $book ) { $authors = $book->getElementsByTagName( "author" ); $author = $authors->item(0)->nodeValue; $publishers = $book->getElementsByTagName( "publisher" ); $publisher = $publishers->item(0)->nodeValue; $titles = $book->getElementsByTagName( "title" ); $title = $titles->item(0)->nodeValue; echo "$title - $author - $publisher\n"; } ?>
沒有留言:
張貼留言