xml基础学习笔记01

时间:2021-08-12 18:09:53

注意:刚刚看了网上对于XML中的标签,节点和元素?到底应该怎么表述?起初我也有这个疑惑,现在我的想法是:下面出现node的应称作节点,节点对象。element应称作元素,毕竟这更符合英文的本意。至于标签,我们可以将<></>称作标签,但只限于这些尖括号。其实没有必要这么咬文嚼字,这些只是便于我们准确的交流,可以让人清楚的理解你所说的是什么,终于的是你知道这个元素或标签指的是什么。

这里给一个w3school上面关于XML元素定义:

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

(201409290041)

还是继续学习 燕十八老师传世经典三部曲第三步:xml ,只是学习笔记,基本都是记录老师的讲解,融入了一些自己的认识。不属于原创,原创请看十八哥的视频。默默的给十八哥送上32个赞

  前几天刚学了smarty模板引擎,由于在公司简单的用过,对于一些smarty已经会用了,只是还不是很清楚,就看了看。并没有做什么笔记,模板引擎吗!只要会用就行了,没有必要学习研究太多其中高级的东西,毕竟现在还是掌握更紧要。至于以后经验丰富了和时间允许可以好好看看源码。

  还是说xml吧,之前简单的看过http://www.w3school.com.cn/ 关于xml的介绍。只是浏览了一边概念,至于到底怎么用,还是没有任何感觉!很多时候都觉得还是需要看着老师或者别人做一下,才能知道这东西什么时候用、在哪里用和怎么用。还是自己有点笨啊!哎。。。

  先来copy一段w3school上面关于xml的介绍吧!  

    一、什么是 XML?      
      XML 指可扩展标记语言(EXtensible Markup Language)
      XML 是一种标记语言,很类似 HTML
      XML 的设计宗旨是传输数据,而非显示数据
      XML 标签没有被预定义。您需要自行定义标签。
      XML 被设计为具有自我描述性。
      XML 是 W3C 的推荐标准
    
    二、XML 与 HTML 的主要差异
      XML 不是 HTML 的替代。
      XML 和 HTML 为不同的目的而设计:
      XML 被设计为传输和存储数据,其焦点是数据的内容。
      HTML 被设计用来显示数据,其焦点是数据的外观。
      HTML 旨在显示信息,而 XML 旨在传输信息
 
    三、学习笔记
 
     XML语法规范
                1、如何声明一个xml文件?
                        有两部分组成,
                            声明部分,声明xml的版本和编码(版本只有1.0)
                            <?xml version='1.0' encoding='utf-8' ?>
                            文档部分/标签部分/节点部分
                            <节点名></节点名>
                            注意:xml中,节点/元素/标签  都是一个意思
                 2、标签的写法
                        标签必须成对出现,进行闭合
                        如:<name></name>
                        标签区分大小写,在xml中标签全部小写
                        或者作为单标签,自闭和    <name /> (当只有<root></root>跟标签且其中没有内容时,浏览器理解为<root />)
                3、整个文档必须有一个根节点,而且只能有一个根节点
                4、标签可以嵌套,但不能相互嵌套
                        <root><name></root></name> 错误
                5、属性的写法
                        属性必有值,推荐小写,属性值必须用双引号包起来
                6、注释的写法
                        <!-- 这里写xml的注释,xml的注释和html的注释写法 规则是一样的-->
                7、特殊字符需要用实体来代替
                        ‘ -> &apos
                           " -> &quot
                            > -> &gt
                            < -> &lt
                8、如果有大段的文本,比如一篇文章,从数据库里面取出来,里面有大量的 ‘,“,>、<、那岂不是还要用实体替换一边?
                        CDATA    节点来表示
                        CDATA节用来放大段文件,不用考虑实体
                        <![CDATA[          这里面写你的内容       ]]>
                9、在xml里,一切皆是节点,包括换行符和空白,都是文本节点(xml是纯文本的,所以这些自然也是节点)
     
      xml DOM解析xml
                 1、  document.getElementsByTagName();
                        childNodes()
                        这两个方法是不是有些熟悉?
                            答:是的,js、java中都有
                        为什么?
                            因为xml是一种严格的文档格式,尤其自身的标准。解析xml也有其标准,叫Dom标准
                            我们所使用的HTML、xml、都遵循Dom标准
                            这也就是为什么我们看到上面的两个函数很熟悉
                            因为无论是php、java、c、js解析dom树,都遵循同样的DOM标准
                    2、如何通过php的DOM对象来解析xml
                            第一步:要把xml文件读进来,形成一个xml文档对象,<-- 对应js --> document对象
                            第二步:再通过getElementsByTagName('标签名') 得到一组节点 <-- js对应--> document.getElementsByTagName()
                            第三步:再把第二步中,得到的一组对象,取得其中某一个,就得到了具体的节点
                    3、创建DOM解析对象
                            $dom = new DOMdocument('1.0','utf-8');
                            DOMdocument object有什么用?
                                它把xml文件加载到内存并分析,你就可以用object分析xml了
                            载入xml文档
                                    $dom->load('文件地址');
                            得到title节点列表,title节点有很多,因此得到的是’节点列表对象‘
                                    $ts = $dom->getElementsByTagName('title');
                                    print_r($ts);     // DOMNodeList object()
                            DOMNodelist 节点列表类
                                一个属性:length,代表取得的节点数量
                                一个方法;item(N)代表取得第N个节点
                                    echo 'we get '.$ts->length.' book';
                            DOMElement Object DOM节点对象  

          $title0 = $ts->item(0); // $title0 就是一个节点对象 DOMElement Object ( )
          $title0->childNodes
          print_r($title0->childNodes); 子节点对象列表 DOMNodeList Object
          选取第一个子节点对象,也就是下面的文本对象

        //这里的子节点列表对象也和上面提到的一样,一个属性和一个方法

        $text = $title0->childNodes->item(0);
                      print_r($text); //DOMText Object ( ) 文本对象

echo $text->wholeText;

    下面给出我的demo
      xml文件
      
 <?xml version='1.0' encoding='utf-8' ?>
<bookstore>
<book>
<title>路遥-平凡的世界</title>
<price>43</price>
</book>
<book>
<title>曹雪芹-红楼梦</title>
<price>93</price>
</book>
</bookstore>

    php文件

 <?php
header("content-type:text/html;charset=utf-8");
//创建DOM解析对象
$dom = new DOMDocument('1.0','utf-8');
print_r($dom); // DOMDocument Object ( ) DOM文档对象
// 载入xml文档
$dom->load('./02.xml');
echo "<br/>";
print_r($dom); // DOMDocument Object ( )
//选取节点,得到节点列表对象 DOMNodeList Object ( )
$ts = $dom->getElementsByTagName('title');
echo "<br/>";
print_r($ts); // DOMNodeList Object ( )
/********************************
* DOMNodeList Object ( )
* 一个属性:length,代表取得的节点数
* 一个方法:item(N),代表取得第N个节点,N从0 开始
*
* *****************************/
echo "<br/>";
echo $ts->length; // 节点列表长度,
echo "<br/>";
//选取列表中的第一个,得到一个节点对象
print_r($ts->item(0)); //DOMElement Object ( ) $title0 = $ts->item(0); // $title0 就是一个节点对象 DOMElement Object ( )
echo "<br/>";
print_r($title0->childNodes); // DOMNodeList Object ( ) 这里的childNodes 是一个属性,得到的是子节点列表对象
/***********************************
* 注意在xml中,一切都是节点,包括文本,回车换行
* 所以,title中的 ‘路遥-平凡的世界’和title的关系就是父子关系。
* 这也就是为什么上面print_r($title0->childNodes); 打印的是 DOMNodeList Object ( ),还是一个节点列表对象
**********************************/
//选取第一个子节点对象,也就是下面的文本对象
//这里的子节点列表对象也和上面提到的一样,一个属性和一个方法
$text = $title0->childNodes->item(0);
echo "<br/>";
print_r($text); //DOMText Object ( ) 文本对象 echo "<br/>";
//我们已经很接近了,我们获得了文本对象,然后只要难道对象内容就行了
//使用文本对象的一个属性 wholeText
echo $text->wholeText; /***********************************************
* 现在,我们捋一捋我们刚才的整个思路
* 首相,实例化一个文档对象:DOMDocument Object ,也就是上面的$dom
* 其次,调用road方法,载入xml文件 $dom->load('./02.xml');
* 然后,通过getElementsByTagName方法 得到一个title节点列表对象:$ts ,DOMNodeList Object
* 再然后,我们想得到第一个书名,我们使用item(0)选取列表中的第一个节点对象 DOMElement Object
* 再然后,通过print_r($title0->childNodes) 看到 得到的又是一个节点列表DOMNodeList Object,为什么?上面已经说明,这里就不再多说了
* 最后,通过$text = $title0->childNodes->item(0); 选取第一个节点对象,这个对象是一个 DOMText Object ( ) 文本对象
* 好了,使用wholeText属性得到信息
* 注意:以上的这些操作都是可以连续操作的,下面举例(将第二本书名取出):
* ********************************************/
echo "<hr/>";
echo $dom->getElementsByTagName('title')->item(1)->childNodes->item(0)->wholeText;
echo "<hr/>";
/**
* 这是一种简洁的写法,但是,这个不够正规
**/
echo $dom->getElementsByTagName('title')->item(1)->nodeValue;
/***************************************
* xml 的DOM解析本身是不难的,但是就是解析的太深了、太繁琐了,所以就会显得有些难
* 虽然此处似乎有些难,但是很有必要仔细学、慢慢学,一定要弄懂,因为这里说的php中的
* 对xml的DOM解析在js、java、C#都是很相似的,甚至和一说一个思想,同样的方法,所以花点
* 时间是很值得的!这就有点像正则表达式,只要学会了,那个程序语言中都可以正常使用
**************************************/
?>

  好了,暂时就做这些吧,至于老师讲的土豆视频应用的那个,不是我没做,我整了老长时间,硬是找不到土豆那个app应用申请在哪里,优酷的我看返回的是json格式,哎,就没有上手做。有时间了看看json ,做做优酷

  夜深了,该睡觉了!程序员可能就这命吧,白天静不下心,也只有晚上才能静静地学习和做东西。
  这几天,总会听到一些很打击自己的事情,一个同学说:我们初中一起念书的女生入职 去哪了 工资8K,我真的不敢相信了,一个应届毕业生、西安邮电、计算机专业,8K北京。我西安3K 。这是什么事啊!心里有点堵
  可是仔细想想,这年头谁还说真话啊,再说了都是人传人,而且我的一个好哥们和那女生都是西安邮电计算机一个班,我就没有听他说起过,而且我哥们在校时就很强了,ios开发,也没听他说他8K啊。哎。。。老是听这些,真闹心!
  还是督促自己好好学习吧,慢慢积累经验。我真的觉得自己并没有在编程上有多少天赋,只是和普通的程序员一样,对程序能想得通,学学也会做,可能比一些牛人花时间多一些。但是我觉得:还是踏踏实实,慢慢学着,别着急。这个行业不会看不到你的努力,这个行业肯定会给你应得的东西。
  哈哈。。。。扯远了!大家轻喷啊

xml基础学习笔记01的更多相关文章

  1. xml基础学习笔记03

    继续上篇xml学习笔记,坚持.坚持.再坚持啊.... 本篇主要记录: 35.XML节点的删除与修改 36集.用XML制作RSS订阅源 <?php /* 笔记: 35.XML节点的删除与修改 使用 ...

  2. xml基础学习笔记05

    Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档   * Xpatn.Xquery,是专门用来查询xml的语言   * 查询xml非常快   Xpatn.Xquery,是专门用来 ...

  3. xml基础学习笔记04

    今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...

  4. xml基础学习笔记02

    接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...

  5. xml基础学习笔记

    1 XML入门 1.1 引入 HTML: 负责网页的结构 CSS: 负责网页的样式(美观) Javascript: 负责在浏览器端与用户进行交互. 负责静态的网页制作的语言 HTML语言特点: 1)由 ...

  6. SpringBoot -基础学习笔记 - 01

    SpringBoot个人笔记-szs 一.使用thymeleaf模板引擎来指定所需资源的位置 可以做到当项目名进行更改后,模板引擎也会进行更新相关的路径;如下图展示,会自动添加crud根目录! &lt ...

  7. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  8. handlebars&period;js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

  9. Redis:学习笔记-01

    Redis:学习笔记-01 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 1. Redis入门 2.1 ...

随机推荐

  1. BZOJ1190&lbrack;HNOI2007&rsqb;梦幻岛宝石

    Description 给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值.数据范围:N<=100;W<=2^30, ...

  2. JQ轮播

    首先是html结构,一个简单的轮播,主要分为三大层:div>ul>li,li里面的img图片. 其次,css样式:div固定住宽高,overflow:hidden:ul的宽度建议是动态获取 ...

  3. 当编译CCBReader时出现 &OpenCurlyDoubleQuote; CCBAnimationManager&period;m Use of undeclared identifier &&num;39&semi;other&OpenCurlyQuote; ” 解决方法

    第一种解决方法是去github上下载最新的CCBReader 第二种解决方法是把other替换成self.inner 建议用新版本的

  4. MYSQL数据表操作语句

    1.查看某数据库中的表 SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern'] SHOW TABLES列举了给定数据库中的非TEMPORARY表.也可以使 ...

  5. QT中显示GIF图片

    在QT中要显示GIF图片,不能通过单单的添加部件来完成. 还需要手动的编写程序. 工具:QT Creator 新建一个工程,我们先在designer中,添加一个QLabel部件. 如下图: 将QLab ...

  6. Python面向对象OOP

    一 OOP     与C++和Java一样,Python同样具有OOP设计. 过程式:从前到后,一条一条,机器能接受的顺序性方式:方式大概为"首先你应该做什么,第二应该做什么,高级点的做点假 ...

  7. 使用EPEL和REMI第三方yum源

    http://dl.fedoraproject.org/pub/epel/ epel-release-latest-.noarch.rpm redhat5 epel-release-latest-.n ...

  8. asp&period;net 未能加载文件或程序集&OpenCurlyDoubleQuote;WebApi”或它的某一个依赖项。试图加载格式不正确的程序。

    http://blog.csdn.net/lingxyd_0/article/details/43155039 一般情况下出现这样的问题是因为.dll文件不存在或者路径不正确.但今天我遇到的情况都不在 ...

  9. mongo常用sql

    基本查询  db.getCollection('chdr').find({chdrnum:"test123456"}) lookup关联查询 db.getCollection ( ...

  10. MySql两种存储引擎的区别

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...