继续上篇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. .NET Web开发总结

    在aspx文件中  创建控件 在右下角有控件信息 按类排序 会将控件信息安装类排序 点击控件 会增加属性页面的分页[事件]页面  可以增加其事件函数 字符串操作及其时间操作 fn_name.Inser ...

  2. JavaScript根据CSS的Media Queries来判断浏览设备的方法

    CSS 部分 首先随便新建一个用来做判断的类,然后通过 Media Queries 来对这个类的 z-index 属性赋予不同的值.这个类仅作为 JavaScript 读取使用,所以需要将其移出屏幕窗 ...

  3. PL/SQL Developer中文注释乱码的解决办法

    1.检查服务器编码: 执行SQL语法: select * from v$nls_parameters; 2.设置本地客户端编码: 进入 我的电脑,属性,高级,环境变量,添加2项:LANG=zh_CN. ...

  4. iOS中UIKit——UIDataDetectors(数据检测器)它将电话、邮件、网址等变为链接

    1.它用于UITextView和UIWebView,属性名为:dataDetetorTypes 2.此属性可以设定使符合电话.邮件.网址.符合格式的日期等文字变为链接文字. 3.电话号码点击后拨出电话 ...

  5. iOS中UIKit——UIFont得到iOS设备上的系统字体

    for (NSString *fontFamily  in [UIFont familyNames]) { NSLog(@"字体家族是:%@",fontFamily); for(N ...

  6. sql 基本操作

    SQL基本操作   一数据类型1整数型 int2精确数值型 decimal(n,p)n为总位数,p为小数位数3浮点型 float4字符型char(n)n最大为4,varchar(n)5日期型datat ...

  7. ADO.NET(很精彩全面)

    记录一下地址方便以后看http://www.cnblogs.com/liuhaorain/archive/2012/02/06/2340409.html

  8. JMeter2.13 连接 sql server

    1.安装驱动 http://www.microsoft.com/zh-CN/download/details.aspx?id=11774 下载最新的即可 解压后复制势穷力竭sqljdbc.jar到 “ ...

  9. Linux 服务器如何设置文件和文件夹的读写权限

    修改文件可读写属性的方法 例如:把index.htm 文件修改为可写可读可执行: chmod 777 index.htm 要修改目录下所有文件属性可写可读可执行: chmod 777 *.* 该命令中 ...

  10. cursorfilter

    android.widget.CursorAdapter它首先实现了两个接口Filterable,CursorFilter.CursorFilterClient.其中Filterable接口定义了ge ...