继续上篇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. PHP 统计中文字符串的长度

    中文网站一般会选择两种编码:gbk/gb2312或是utf-8. gbk编码下每个中文字符所占字节为2,例: $zhStr = ‘您好,中国!’; echo strlen($zhStr); // 输出 ...

  2. Jquery获取selelct选中值

    误区: 一直以为jquery获取select中option被选中的文本值,是这样写的: $("#s").text();  //获取所有option的文本值 实际上应该这样: $(& ...

  3. IOS懒人笔记应用源码

    这个源码是懒人笔记应用源码,也是一个已经上线的apple应用商店的应用,懒人笔记iOS客户端源码,支持语音识别,即将语音转化成文本文字,所用语音识别类库为讯飞语音类库. 懒人笔记是一款为懒人设计的笔记 ...

  4. OpenStack实战(一)

    OpenStack作为当前发展势头迅猛的云计算开源项目,去年进行了一些了解,现在有空回来进行一些补充记录,当时实战的版本是那会最新版本,当然现在已经更新了好几版了,不过还是那句话“这些丝毫不影响,了解 ...

  5. 【SMS】移动短信网关返回信息状态代码说明【China Mobile】

    1 由SMSC返回的一般结果状态报告 含义 说明 处理建议DELIVRD 消息发送成功 用户成功接收到短信 ??EXPIRED 因为用户长时间关机或者不在服务区等导致的短消息超时没有递交到用户手机上 ...

  6. C#使用结构来传递多个参数

    当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } clas ...

  7. mysql存储引擎(mysql学习六)

    存储引擎 现在只有InnoDB支持外键 上接着学习笔记五 class表中有外键,所以不能修改存储引擎 表类型   默认的服务器表类型,通过my.ini可以配置    Default-storage-e ...

  8. 学习simple.data之进阶篇

    一.结果排序 -OrderBy(升序) -OrderByDescending(降序) db.Product.All().OrderByFactoryName(); db.Product.All().O ...

  9. STM32F0xx_GPIO配置详细过程

    前言 对于初学STM32的人来说,很多基础的知识没有掌握,这些基础知识就成为阻挡他们入门的门槛.因此,今天也把基础的知识分享出来,带领那些还没有迈过这个门槛的人入门. 今天总结“GPIO配置详细”,以 ...

  10. AngularJs记录学习03

    AngularJs的路由是一个组件,需要自己额外添加,在目录/src/ngRoute中 三个文件route.js,routeParams.js,ngView.js <html> <h ...