xml基础学习笔记03

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

  本篇主要记录:

    35、XML节点的删除与修改

    36集、用XML制作RSS订阅源

  

 1 <?php
 2
 3 /*
 4   笔记:
 5     35、XML节点的删除与修改
 6     使用的xml文件是这样的
 7         <?xml version=‘1.0‘ encoding=‘utf-8‘ ?>
 8         <bookstore>
 9             <book>
10                 <title>路遥-平凡的世界</title>
11                 <price>43</price>
12             </book>
13             <book>
14                 <title>曹雪芹-红楼梦</title>
15                 <price>93</price>
16             </book>
17         </bookstore>
18 */
19 // 删除    首先删除 路遥-平凡的世界这本书的节点
20 //    1、创建DOM对象
21     $dom = new DOMDocument(‘1.0‘,‘utf-8‘);
22
23 //    2、载入xml文件
24     $dom->load(‘./35.xml‘);
25
26 //    3、查找book节点,得到book节点列表,选取 ‘路遥-平凡的世界’ 这个节点删除, 下面的是连操作
27     $book = $dom->getElementsByTagName(‘book‘)->item(0);
28 /**
29  *    4、查找手册:removeChild()
30  *    public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
31  *    This functions removes a child from a list of children. 从子节点列表中删除一个子节点,
32  *    我们首先找到了 ‘路遥-平凡的世界’ 节点,然后用 parentNode 这个属性得到其父节点
33  *     调用removeChild方法删除子节点
34  */
35 //    这里我们首先看看parentNode这个属性得到什么结果
36     //print_r($book->parentNode);                //   DOMElement Object 一个对象
37
38 //    接下来删除子节点
39     //$book->parentNode->removeChild($book);
40
41 //    输出删除后的$dom对象
42     //header(‘content-type:text/xml‘);
43     //echo $dom->saveXML();
44 /**
45  *    可以看到删除后的xml只剩下‘红楼梦’这个book了
46  */
47
48 /**
49  *    现在再看看修改一个节点,在提供的方法中没有专门的修改的方法,
50  *    但是我们可以使用 replaceChild() 方法替换(节点没法修改,只能替换)
51  *    而且和上面删除一样,是站在父节点的基础上替换节点的
52  *    public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
53  */
54
55 //    这里我们替换 ‘曹雪芹-红楼梦’ 这个title节点,还是先注释掉上面的删除操作
56 //    1、创建文本节点
57     $text = $dom->createTextNode(‘吴承恩-西游记‘);
58 //    2、找到要替换的$oldnode节点,也就是‘红楼梦’这个title节点
59     $title = $dom->getElementsByTagName(‘title‘)->item(1);
60 //    修改/替换 节点
61     $title->replaceChild($text,$title->firstChild);
62
63     header(‘content-type:text/xml‘);
64     echo $dom->saveXML();
65 //    结果如图2
66
67
68
69
70
71 ?>

  图-1

    

  图-2

  

  xml 做rss订阅源

  

  1 <?php
  2 /**
  3  * 36集、用XML制作RSS订阅源
  4  * 关于RSS 2.0 的规范,大家可以去网上找,很简单也和仔细的文档。很容易理解
  5  */
  6
  7 /** 首先编辑36.xml这个模板xml文件,如图3
  8  *    <?xml version=‘1.0‘ encoding=‘utf-8‘ ?>
  9  *    <rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/"></rss>
 10  */
 11
 12 /**
 13  * @authors wxb (http://www.cnblogs.com/wxb0328/)
 14  * @date    2014-10-03 22:56:22
 15  * 动态生成RSS得类
 16  */
 17
 18 class Feed {
 19     public $title = ‘‘;        // channel中的title,在 关于RSS 2.0 的规范 中规定是必须的 包括下面的 link和description
 20     public $link = ‘‘;
 21     public $description = ‘‘;
 22
 23     public $items = array();    // 要生成item节点的二维数组
 24
 25     public $template = ‘./36.xml‘;        //xml模板文件
 26     protected $dom = null;
 27
 28     function __construct(){
 29         $this->dom = new DOMDocument(‘1.0‘,‘utf-8‘);    // 实例化一个文档对象
 30         $this->dom->load($this->template);                // 载入模板文件
 31     }
 32
 33     // 封装一个创建节点的方法,如:<title>标题</title>
 34     protected function createEle($eleName,$val) {
 35         $text = $this->dom->createTextNode($val);
 36         $ele = $this->dom->createElement($eleName);
 37         $ele->appendChild($text);
 38         return $ele;
 39     }
 40
 41     // 封装一个方法,用来创建item
 42     protected function createItem($arr) {
 43         $item = $this->dom->createElement(‘item‘);
 44         foreach ($arr as $key => $val) {
 45             $ele = $this->createEle($key,$val);
 46             $item->appendChild($ele);
 47         }
 48         return $item;
 49     }
 50
 51     // 封装一个channel方法,用来创建RSS的唯一且必须的channel节点
 52     protected function createChannel() {
 53         $channel = $this->dom->createElement(‘channel‘);
 54         $channel->appendChild($this->createEle(‘title‘,$this->title));
 55         $channel->appendChild($this->createEle(‘link‘,$this->link));
 56         $channel->appendChild($this->createEle(‘description‘,$this->description));
 57         return $channel;
 58
 59     }
 60
 61     // 将子节点加入到rss节点中
 62     protected function appendChildToRss($ele) {
 63         $rss = $this->dom->getElementsByTagName(‘rss‘)->item(0);
 64         $rss->appendChild($ele);
 65     }
 66
 67     // 封装一个addItem方法,用来把所有的书籍增加到Rss里面去
 68     // $list 是书籍列表,是一个二维数组,
 69     protected function addItem($list) {
 70         foreach ($list as $key => $val) {
 71             $item = $this->createItem($val);
 72             $this->appendChildToRss($item);        // 将item加入到rss节点中
 73         }
 74     }
 75
 76     // 显示xml制作的rss源的方法
 77     public function display() {
 78         $channel = $this->createChannel();
 79         $this->appendChildToRss($channel);
 80         $item = $this->addItem($this->items);
 81         header(‘content-type:text/xml‘);
 82         echo $this->dom->saveXML();
 83     }
 84 }
 85
 86 // 连接数据库
 87 $conn = mysql_connect(‘localhost‘,‘root‘,‘root‘);
 88 mysql_query(‘set names utf8‘);
 89 mysql_query(‘use bookstore‘);
 90 $sql = ‘select b_title as title,b_desc as description,b_price as price from books order by price desc limit 5‘;
 91 $res = mysql_query($sql,$conn);
 92 $list = array();
 93 while ($row = mysql_fetch_assoc($res)) {
 94     $list[] = $row;
 95 }
 96
 97
 98 $feed = new Feed();
 99 $feed->title = ‘xml 学习‘;
100 $feed->link = ‘http://www.cnblogs.com/wxb0328/‘;
101 $feed->description = ‘xml 学习笔记,点滴记录,一定会很有用‘;
102 $feed->items = $list;
103
104 $feed->display();    // 如图4

  图-3

  

  图-4

  

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

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

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

时间: 2024-10-01 07:17:57

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

xml基础学习笔记05

Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档 * Xpatn.Xquery,是专门用来查询xml的语言 * 查询xml非常快 Xpatn.Xquery,是专门用来查询xml的语言 查询xml非常快 下面主要记录一下w2school 上面学习的笔记 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 路径表达式 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集.这些路径表达式和我们在常

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. 但是,如果手写Html标签效率又比较低,可重用度比较低.这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码: <input name="UserName&quo

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

HTML&CSS基础学习笔记13—无序列表

无序列表 有时我们的工作繁忙,杂事很多,怕忘记,就会把事情一件件列出来,防止忘记. 它们的排列顺序对于我们来说并不重要,可以随意调换,我们将它称为无序列表,HTML里用<ul>标签来表示无序列表,列表里的项目则用<li>标签来表示: 1 2 3 4 5 <ul>     <li></li>     <li></li>     ... </ul> 看一段实例代码: 对于的浏览器显示结果是这样的: 更多内容学习,请

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. Razor在减少代码冗余.增强代码可读性和Visual Studio智能感知方面,都有着突出的优势.Razor一经推出就深受广大ASP.Net开发者的喜爱. 1.2 Razor的语法 (1)Razor文件类型:Razor支持两种文件类型,分

JAVA基础学习笔记(1)

今天第一天开始学JAVA,时间:2014年6月17日 学习内容:1.java环境的架设 2.JAVA基本数据类型 1.JAVA环境的架设       1.要先去下载JDK,下载地址 2.安装完成后,设置环境变量 1.1环境变量的设置        1.右键-我的电脑-属性-高级-环境变量-系统变量,找到PATH,在里面加入jdk里bin目录的地址 如:c:\java\bin; 2.新建-名为classpath,值为. 1.2测试JAVA是否配置正确        1.在cmd里面输入javac.

XML之学习笔记

参考:http://www.w3school.com.cn/xml/index.asp中的 树结构.语法.元素.属性.验证.命名空间.编码 目的:理解Android开发中的.xml文件是怎样的 XML代码均摘自ADT(Android Development Tools),讲述如有谬误,敬请指正. XML规定:区分大小写.必须有根元素.标签打开了就要关闭 一.元素 开始标签到结束标签的部分,特定类型的一个事物 <.../>不允许有子元素, 即叶节点 <...>...<.../&