document object model,文档对象模型,就是树形结构
节点的分类
如果book下只有一个节点元素可以用此操作取得结点元素的值
/***********************************************************/
'PHP','type'=>'脚本语言'),array('name'=>'XML','type'=>'标记语言'),array('name'=>'C#','type'=>'动态语言')); $doc=new DOMDocument('1.0','utf-8'); //设置版本号和字符编码 $doc->formatOutput=true; //格式化输出 一般不用 这样降低效率 $books=$doc->createElement('books'); //创建一个元素节点 foreach($array as $value) { $book=$doc->createElement('book');//创建book节点 $name=$doc->createElement('name', $value\['name'\]); //创建name节点,并赋值 $book->appendChild($book); //在元素的最后面添加子元素 $book->appendChild($name); $book->setAttribute('type',$value\['type'\]); } $doc->appendChild($books); $doc->save('books.xml'); echo '写入成功'; /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ if($\_POST){//对已有的xml文档进行添加操作 $doc=new DOMDocument();//不需要字符集和版本,因为已经存在 $doc->preserveWhiteSpace=false;//去掉空格元素的影响 $doc->formatOutput=true;//格式化输出 $path='./books.xml';//将文件路径变为变量,以后好修改 $doc->load($path);//对xml文档加载 $book=$doc->createElement('book');//创建book节点 $name=$doc->createElement('name',$\_POST\['name'\]);//创建name节点 $price=$doc->createElement('price',$\_POST\['price'\]);//创建price节点 $book->appendChild($name);//改变xml中包含的顺序 $book->appendChild($price); $book->setAttribute('type', $\_POST\['type'\]);//设置book节点的属性 $books=$doc->documentElement;//创建books节点 $books->appendChild($book);// if($doc->save($path))//保存xml文档到硬盘 { header('location:books\_admin.php'); } else { echo '添加失败'; } } /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ //删除节点 preserveWhiteSpace=false; $doc->formatOutput=true; $doc->load('books.xml'); $index=$\_GET\['index'\]; $book=$doc->getElementsByTagName('book')->item($index); $book->parentNode->removeChild($book); $doc->save('books.xml'); header('location:books\_admin.php'); /\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/ 修改 preserveWhiteSpace=false; $path='./books.xml'; $doc->load($path); $oldbook=$doc->getElementsByTagName('book')->item($index); if($\_POST){ $newbook=$doc->createElement('book'); $name=$doc->createElement('name',$\_POST\['name'\]); $price=$doc->createElement('price',$\_POST\['price'\]); $newbook->setAttribute('type', $\_POST\['type'\]); $newbook->appendChild($name); $newbook->appendChild($price); $root=$doc->documentElement->replaceChild($newbook, $oldbook); //替换节点 $doc->save($path); header('location:books\_admin.php'); } ?>/***********************************************************/
值节点的名称是“#text”,根节点的名称是“#document”
<?php
//递归XML文档 适合xml通用操作,但是消耗资源
function getChilds($node){
echo "
if($node->nodeType==3){
echo "
}
else
{
echo "
if($node->attributes->length>0) //节点的属性的个数大于0,表示此节点有属性
{
foreach ($node->attributes as $attr){
echo "
}
}
foreach($node->childNodes as $child){ //便利循环子元素
getChilds($child); //递归点
}
}
echo "
}
$doc=new DOMDocument();
$doc->preserveWhiteSpace=false; //不保护空格,就是导入XML的时候去掉空白字符
$doc->load('books.xml');
$root=$doc->documentElement; //获得最顶层元素
getChilds($root);
手机扫一扫
移动阅读更方便
你可能感兴趣的文章