zoukankan      html  css  js  c++  java
  • xml基础学习笔记02

      接着上次的xml笔记01 ,记录一下如何DOM创建xml

      一、由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会看明白的,代码中用到的方法,php手册都有。不知道的可以查手册,这里说说我查手册时的一个总结:

        1.DOMNode 类 ,这是一个dom的根类,里面定义了一下属性和方法。比如:$nodeName属性 appendChild方法 等等

        2、DOMDocument 类,这是一个文档类,它继承domNode类,里面有自己的属性和方法

            3、DOMElement 类,是一个元素类,也是继承domNode类,当然也有自己的属性和方法

        4、DOMAttr 类 一个属性类,和上面一样

        5、DOMCdataSection类,一个CDATA类,同上

        6、DOMText 类,一个文本类,同上

      如何创建和使用对应的类?

        看上篇博客有这几个对象:

          DOMdocument object  -->   DOMDocument 类

          DOMElement Object  -->  DOMElement 类

          DOMText Object  -->  DOMText 类

          DOMNodeList Object   这个是节点列表对象是 对应 DOMNodeList 类

      二、现在给出代码,就把注释当做博文吧。

        

      1 <?php
      2 /**
      3  * 
      4  * @authors wxb (http://www.cnblogs.com/wxb0328/)
      5  * @date    2014-09-30 22:36:02
      6  * @version $Id$
      7  */
      8 /*
      9 34、DOM创建XML
     10             1、再次强调:在xml里,一切皆是节点,包括换行符和空白,都是文本节点(xml是纯文本的,所以这些自然也是节点),下面说的属性也是一个节点,叫做属性节点
     11             2、如何生成下面这样的xml文件?
     12                     <?xml version='1.0' encoding='utf-8' ?>
     13                     <bookstore>
     14                      <book id="b001">
     15                       <title>路遥-平凡的世界</title>
     16                       <intro><![CDATA[这是一部经典书籍&老少皆宜]]></intro>
     17                      </book>
     18                     </bookstore>
     19                 DOM怎么创建?
     20                     方法一:从里往外
     21                         1、创建 路遥-平凡的世界 文本节点
     22                         2、创建普通的title节点
     23                         3、把 路遥-平凡的世界 文本节点,加入到title节点中
     24                         4、创建CDATA节点
     25                         5、创建intro节点
     26                         6、把CDATA节点放到intro节点中
     27                         7、创建book节点
     28                         8、把title和intro节点放到book节点中
     29                         9、创建id属性节点
     30                         10、把属性节点放到book节点中
     31                         11、再创建bookstore节点
     32                         12、把book节点放到bookstore节点中
     33                         13、把bookstore节点放到文档中
     34                     方法二:从外往里
     35 
     36                     在上面的步骤中我们提取出下面几种操作:
     37                         1、如何创建文本节点
     38                         2、如何创建普通节点
     39                         3、如何创建CDATA节点
     40                         4、如何创建属性节点
     41                         5、如何增加子节点
     42                     下面开始完成这个xml的创建,操作中的方法的具体用法和说明查php手册
     43 */
     44 // 创建DOM文档对象
     45 $dom = new DOMDocument('1.0','utf-8');
     46 
     47 // 1、创建文本节点,
     48 // 调用createTextNode()方法
     49 $text = $dom->createTextNode('路遥-平凡的世界');
     50 // 2、创建title元素
     51 $title = $dom->createElement('title');
     52 
     53 // 3、把 路遥-平凡的世界 文本节点,加入到title节点中
     54 $title->appendChild($text);
     55 // 4、创建CDATA节点
     56 $cdata = $dom->createCDATASection('这是一部经典书籍&老少皆宜');
     57 // 5、创建intro节点
     58 $intro = $dom->createElement('intro');
     59 // 6、把CDATA节点放到intro节点中
     60 $intro->appendChild($cdata);
     61 // 7、创建book节点
     62 $book = $dom->createElement('book');
     63 // 8、把title和intro节点放到book节点中
     64 $book->appendChild($title);
     65 $book->appendChild($intro);
     66 // 9、创建id属性节点
     67 $id = $dom->createAttribute('id');
     68 $id->value = 'b001';
     69 // 10、把属性节点放到book节点中
     70 $book->appendChild($id);
     71 // 11、再创建bookstore节点
     72 $bookstore = $dom->createElement('bookstore');
     73 // 12、把book节点放到bookstore节点中
     74 $bookstore->appendChild($book);
     75 // 13、把bookstore节点放到文档中
     76 $dom->appendChild($bookstore);
     77 
     78 // 输出看看
     79 /*
     80  *
     81  * 为什么这个方法可以输出,看名字不想啊,查看手册我们可以看到
     82  * string DOMDocument::saveXML ([ DOMNode $node [, int $options ]] )
     83  * Returns the XML, or FALSE if an error occurred. 
     84  * 这个方法,参数可以缺省,返回是一个xml,也就是字符串吧,定义不是:string吗
     85  */
     86 //echo $dom->saveXML();
     87 /* 
     88  * 我们看到结果如图1,页面上什么也没有,但是请注意头部那个标签,我们再右键看源码。如图2
     89  * 明白了,之所以没有在页面上看到是因为浏览器解析了我们的这个xml
     90  * 那么怎么避免浏览器解析?
     91  * 给浏览器发生一个头部信息,告诉浏览器给的是xml 不要解析
     92  * header("content-type:text/xml");
     93  * 
     94 */
     95 //现在我们先注释掉上面的输出,用下面的输出 
     96 //header("content-type:text/xml");
     97 //echo $dom->saveXML();
     98 // 结果如图3
     99 
    100 /* 现在我们试着将上面生成的xml 保存成一个文件
    101  * 使用save()方法
    102  * int DOMDocument::save ( string $filename [, int $options ] )
    103  *         filename The path to the saved XML document
    104 
    105  */
    106 echo $dom->save('34.xml') ? "ok" : "no";
    107 // 成功生成xml文件,如图4
    108 
    109 /*
    110  * 同时,我们发现,生成的这个xml文档,没有任何格式,没有空格、没有换行、一行就完成了。
    111  * 这恰恰验证了 上面说的 在xml中一切皆是节点
    112  */
    113 
    114 ?>

    图片:

    图一

    图二

    图三:

    图四:

      好了,就这么多吧,睡觉了。如果有什么错误,欢迎大家批评指正啊。晚安,博客园

  • 相关阅读:
    less @import and extend及mixin详解
    Less的guards and argument matching
    LESS嵌套中的Mixins和classes
    bootstrap colorscheme以及theme自动生成
    C# Winform 获得下拉框 选中的值
    C# 后台按键 视频播放器 全屏后无法 触发
    C# 调用win32API 获取进程句柄 有毛用???
    C# 键盘钩子
    C# SqlParameter 使用
    C# 获得星期几
  • 原文地址:https://www.cnblogs.com/wxb0328/p/4003682.html
Copyright © 2011-2022 走看看