继续上篇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. MVC 项目 在前台使用DataTable

    1:后台控制器代码 //CreateTestOutputDataHeader生成一个测试DataTable public ActionResult UseDataTable() { DataTable ...

  2. webservice简介以及简单使用

    本文主要是简单的介绍webservice是什么.webservice的由来.webservice的作用,以及后面会介绍webservice的使用. webservice是什么? 目前,Web serv ...

  3. 学习笔记 - 数据绑定之knockout

    参考: http://www.cnblogs.com/TomXu/archive/2011/11/21/2257154.html http://knockoutjs.com/documentation ...

  4. Dev的DocumentManager添加窗体

    1.DocumentManager要设置自己的MdiParent属性 2.主窗体设置IsMidContainer为True 3.要生成的窗体设置MdiParent为主窗体 4.正常创建窗体,然后就可以 ...

  5. luigi学习2-在hadoop上运行Top Artists

    一.AggregateArtistsHadoop class AggregateArtistsHadoop(luigi.contrib.hadoop.JobTask): date_interval = ...

  6. C++ string 转 char*

    string 转到 char* char name[20]; string sname=GatherName[n]; strcpy(name,sname.c_str());

  7. PHP实例 表单数据插入数据库及数据提取 用户注册验证

    网站在进行新用户注册时,都会将用户的注册信息存入数据库中,需要的时候再进行提取.今天写了一个简单的实例. 主要完成以下几点功能: (1)用户进行注册,实现密码重复确认,验证码校对功能. (2)注册成功 ...

  8. Java 第五天 Spring IOC 配置文件

    Spring xml结构定义文件: http://www.springframework.org/schema/beans/spring-beans.xsd 可用xsd列表: http://www.s ...

  9. UCOS2_STM32F1移植详细过程(二)

    Ⅰ.概述 打开上一篇文章新建的工程,是提取的ST标准库里面源代码文件和UCOS工程包源代码文件.下载过的朋友可能会知道,直接编译那个工程会有大片的错误和警告,原因在于那个工程是没有经过修改源代码的工程 ...

  10. Python开发【第一篇】Python基础之字符串格式化

    字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...