PHP5 DOM TEST
时间:2008-04-02 来源:liuxingyuyuni
?php
/**
* @date Tue Apr 01 19:35:53 CST 2008
* @user BianYuan
* @todo PHP5 DOM TEST
* */
echo "";
$xmlFile = "test.xml";
$dom = new DOMDocument();
$dom->formatOutput = true;
$dom->load($xmlFile, LIBXML_NOBLANKS);
$rootNode = $dom->documentElement; // 返回一个DOMElement对象
// 返回根节点的名称
//echo $rootNode->nodeName;
//返回节点的类型
//echo $rootNode->nodeType;
/**
* @todo 获得指定节点下的所有文本节点值
* */
function getAllNodeValue($root) {
static $nodeValueList;
$children = $root->childNodes;
foreach ($children as $node) {
if($node->hasChildNodes()) {
getAllNodeValue($node);
}else{
$nodeValueList[] = $node->nodeValue;
}
}
return $nodeValueList;
}
//print_r(getAllNodeValue($rootNode));
//=====================================================
// 遍历 DOMNodeList 的两种方法
$elements = $dom->getElementsByTagName("author"); // 返回DOMNodeList对象
// 方法二
foreach ($elements as $node) {
////////////////echo $node->nodeValue . "\n";
}
//echo "";
// 方法二
for($i=0; $i$elements->length; $i++) {
///////////////////echo $elements->item($i)->nodeValue . "\n";
}
//=====================================================
// 获得所有book节点的属性信息
$nodeList = $rootNode->getElementsByTagName("book");
foreach ($nodeList as $node) {
/**
* @desc 方法一
* */
if(! $node->hasAttributes()) {
return false;
}
$attributes = $node->attributes;
foreach ($attributes as $attr) {
$nodeAttrInfo[] = array(
$node->nodeName => array(
'attributeName' => $attr->nodeName,
'attributeValue' => $attr->nodeValue
)
);
////////////////////print_r($nodeAttrInfo);
}
/**
* @desc 直接输出某个属性的值
* */
/////////////echo "book节点的属性值:";
//$isbn = $node->getAttribute("isbn");
/////////////echo $isbn . "\n";
}
//====================================================
// XML树的添加,修改与删除
//====================================================
/**
* @todo 添加修改XML树
* */
//==============
// 创建book节点 =
//==============
/*
$book = $dom->createElement('book'); //或 $book = new DOMElement("book");
// 创建book的子节点 name,author,date,describe 此是他们属于孤立状态
$bookName = $dom->createElement('name', 'book test222');
$bookAuthor = $dom->createElement('author', 'some user2222');
$bookDate = $dom->createElement('date', '2008-01-02');
$bookDesc = $dom->createElement('describe');
$bookDescText= $dom->createCDATASection('cdata context22222');
// 创建属性节点
$bookAttrIsbn= $dom->createAttribute('isbn');
// 创建属性节点的文本
$isbnValue = $dom->createTextNode('789456');
// 将name,author,date,describe子节点追加到book节点
$book->appendChild($bookName);
$book->appendChild($bookAuthor);
$book->appendChild($bookDate);
$book->appendChild($bookDesc);
// 将cdata节点追加到 $bookDesc变量所代表的节点
$bookDesc->appendChild($bookDescText);
// 为属性节点添加文本值
$bookAttrIsbn->appendChild($isbnValue);
$book->setAttributeNode($bookAttrIsbn);
// 将$book节点追加到 $rootNode 顶层节点
$rootNode->appendChild($book);
*/
//=========
// 修改节点= 目标:修改第一个book节点的name值
//=========
$nameNodeList = $rootNode->getElementsByTagName("name");
foreach ($nameNodeList as $bookNameNode) {
if($bookNameNode->nodeValue = "bianyuan") {
$bookNameNode->parentNode->replaceChild(new DOMElement("name", "bianyuanbbb"), $bookNameNode);
}
}
$dom->save('D:\www\Study_Test\test.xml')
?>
相关阅读 更多 +