继续上篇xml学习笔记,坚持、坚持、再坚持啊、、、、

  本篇主要记录:

    35、XML节点的删除与修改

    36集、用XML制作RSS订阅源

  

 <?php

 /*
笔记:
35、XML节点的删除与修改
使用的xml文件是这样的
<?xml version='1.0' encoding='utf-8' ?>
<bookstore>
<book>
<title>路遥-平凡的世界</title>
<price>43</price>
</book>
<book>
<title>曹雪芹-红楼梦</title>
<price>93</price>
</book>
</bookstore>
*/
// 删除 首先删除 路遥-平凡的世界这本书的节点
// 1、创建DOM对象
$dom = new DOMDocument('1.0','utf-8'); // 2、载入xml文件
$dom->load('./35.xml'); // 3、查找book节点,得到book节点列表,选取 ‘路遥-平凡的世界’ 这个节点删除, 下面的是连操作
$book = $dom->getElementsByTagName('book')->item(0);
/**
* 4、查找手册:removeChild()
* public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
* This functions removes a child from a list of children. 从子节点列表中删除一个子节点,
* 我们首先找到了 ‘路遥-平凡的世界’ 节点,然后用 parentNode 这个属性得到其父节点
* 调用removeChild方法删除子节点
*/
// 这里我们首先看看parentNode这个属性得到什么结果
//print_r($book->parentNode); // DOMElement Object 一个对象 // 接下来删除子节点
//$book->parentNode->removeChild($book); // 输出删除后的$dom对象
//header('content-type:text/xml');
//echo $dom->saveXML();
/**
* 可以看到删除后的xml只剩下‘红楼梦’这个book了
*/ /**
* 现在再看看修改一个节点,在提供的方法中没有专门的修改的方法,
* 但是我们可以使用 replaceChild() 方法替换(节点没法修改,只能替换)
* 而且和上面删除一样,是站在父节点的基础上替换节点的
* public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
*/ // 这里我们替换 ‘曹雪芹-红楼梦’ 这个title节点,还是先注释掉上面的删除操作
// 1、创建文本节点
$text = $dom->createTextNode('吴承恩-西游记');
// 2、找到要替换的$oldnode节点,也就是‘红楼梦’这个title节点
$title = $dom->getElementsByTagName('title')->item(1);
// 修改/替换 节点
$title->replaceChild($text,$title->firstChild); header('content-type:text/xml');
echo $dom->saveXML();
// 结果如图2 ?>

  图-1

    

  图-2

  

  xml 做rss订阅源

  

 <?php
/**
* 36集、用XML制作RSS订阅源
* 关于RSS 2.0 的规范,大家可以去网上找,很简单也和仔细的文档。很容易理解
*/ /** 首先编辑36.xml这个模板xml文件,如图3
* <?xml version='1.0' encoding='utf-8' ?>
* <rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/"></rss>
*/ /**
* @authors wxb (http://www.cnblogs.com/wxb0328/)
* @date 2014-10-03 22:56:22
* 动态生成RSS得类
*/ class Feed {
public $title = ''; // channel中的title,在 关于RSS 2.0 的规范 中规定是必须的 包括下面的 link和description
public $link = '';
public $description = ''; public $items = array(); // 要生成item节点的二维数组 public $template = './36.xml'; //xml模板文件
protected $dom = null; function __construct(){
$this->dom = new DOMDocument('1.0','utf-8'); // 实例化一个文档对象
$this->dom->load($this->template); // 载入模板文件
} // 封装一个创建节点的方法,如:<title>标题</title>
protected function createEle($eleName,$val) {
$text = $this->dom->createTextNode($val);
$ele = $this->dom->createElement($eleName);
$ele->appendChild($text);
return $ele;
} // 封装一个方法,用来创建item
protected function createItem($arr) {
$item = $this->dom->createElement('item');
foreach ($arr as $key => $val) {
$ele = $this->createEle($key,$val);
$item->appendChild($ele);
}
return $item;
} // 封装一个channel方法,用来创建RSS的唯一且必须的channel节点
protected function createChannel() {
$channel = $this->dom->createElement('channel');
$channel->appendChild($this->createEle('title',$this->title));
$channel->appendChild($this->createEle('link',$this->link));
$channel->appendChild($this->createEle('description',$this->description));
return $channel; } // 将子节点加入到rss节点中
protected function appendChildToRss($ele) {
$rss = $this->dom->getElementsByTagName('rss')->item(0);
$rss->appendChild($ele);
} // 封装一个addItem方法,用来把所有的书籍增加到Rss里面去
// $list 是书籍列表,是一个二维数组,
protected function addItem($list) {
foreach ($list as $key => $val) {
$item = $this->createItem($val);
$this->appendChildToRss($item); // 将item加入到rss节点中
}
} // 显示xml制作的rss源的方法
public function display() {
$channel = $this->createChannel();
$this->appendChildToRss($channel);
$item = $this->addItem($this->items);
header('content-type:text/xml');
echo $this->dom->saveXML();
}
} // 连接数据库
$conn = mysql_connect('localhost','root','root');
mysql_query('set names utf8');
mysql_query('use bookstore');
$sql = 'select b_title as title,b_desc as description,b_price as price from books order by price desc limit 5';
$res = mysql_query($sql,$conn);
$list = array();
while ($row = mysql_fetch_assoc($res)) {
$list[] = $row;
} $feed = new Feed();
$feed->title = 'xml 学习';
$feed->link = 'http://www.cnblogs.com/wxb0328/';
$feed->description = 'xml 学习笔记,点滴记录,一定会很有用';
$feed->items = $list; $feed->display(); // 如图4

  图-3

  

  图-4

  

  这几点,学习的都有点皮了,哎!学习这种东西,一旦热情消退,还能坚持,真的很不容易。自我鼓励还是很有必要的,有时也许需要一些YY,好让我们对那个想象中的未来充满希望和动力。

  梦想还是要有的,万一实现了呢

  加油、奋斗在路上的人们!

xml基础学习笔记03的更多相关文章

  1. xml基础学习笔记05

    Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档   * Xpatn.Xquery,是专门用来查询xml的语言   * 查询xml非常快   Xpatn.Xquery,是专门用来 ...

  2. xml基础学习笔记04

    今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...

  3. xml基础学习笔记01

    注意:刚刚看了网上对于XML中的标签,节点和元素?到底应该怎么表述?起初我也有这个疑惑,现在我的想法是:下面出现node的应称作节点,节点对象.element应称作元素,毕竟这更符合英文的本意.至于标 ...

  4. xml基础学习笔记02

    接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...

  5. xml基础学习笔记

    1 XML入门 1.1 引入 HTML: 负责网页的结构 CSS: 负责网页的样式(美观) Javascript: 负责在浏览器端与用户进行交互. 负责静态的网页制作的语言 HTML语言特点: 1)由 ...

  6. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  7. Redis:学习笔记-03

    Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...

  8. Maven基础学习笔记

    Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...

  9. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

随机推荐

  1. Jqgrid获取行id

    //获取选中行(单行)的ID var id = $("#table").jqGrid('getGridParam','selrow'); //根据id获取行数据,返回的是列表 va ...

  2. 在C#中对Datatable排序【DefaultView的Sort方法】

    在C#中对Datatable排序,[DefaultView的Sort方法] 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID& ...

  3. js的变量作用域 ,变量提升

    (function(){ a = 5; alert(window.a); var a = 10; alert(a); })(); 结果: undefined 10 代码等同于下面 var a = un ...

  4. POJ C++程序设计 编程题#1 大整数的加减乘除

    编程题#4:大整数的加减乘除 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 ...

  5. 网页热力图 heatmap js

    HBuilder +js 实现网页热力图 废话不多说,上代码 <!DOCTYPE html> <html> <head> <title>111</ ...

  6. php安装redis扩展连接redis服务器

    扩展包的下载地址:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz tar xf phpredis-2.2.4.tar.gz cd ...

  7. 射击比赛 (POJ 1719) 题解

    [问题描述] 我们假设射击的目标是一个由R*C(2≤R≤C≤ 1000)个小方格组成的矩形网格.网格中每一列恰有2个白色的小方格和R-2个黑色的小方格.定义网格的行从顶至底编号为1~R,列从左至右编号 ...

  8. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  9. 【转】Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败

    错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot ...

  10. ios中的XMPP简介

      1.XMPP的定义 •XMPP:The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)   •XMPP可用于服务类实时通讯.表示和需求 ...