认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)

0、简要理解几个基本概念

-----0.0 标记语言是什么?

-----0.1 标准通用标记语言(SGML)

-----0.2 可扩展标记语言(XML):本文主角

1、本文主角:XML(可扩展标记语言)

-----1.0 XML学习-思维导图

-----1.1 XML-语法规范概述

-----1.2 XML-文档声明

-----1.3 XML-注释

-----1.4 XML-元素(/标记/节点)

-----1.5 XML-属性

2、实例hadoop/core-site.xml解析

提出问题:
在搭建Hadoop集群时,第一个配置的文件是:hadoop-2.6.5/etc/hadoop/core-site.xml,添加RPC配置。

[root@master hadoop]# vi /opt/bigdata/hadoop-2.6.5/etc/hadoop/core-site.xml

        
                fs.defaultFS
                hdfs://192.168.11.128:9000
        
        
                hadoop.tmp.dir
                file:/opt/bigdata/hadoop-2.6.5/tmp
        

其中,RPC(remote procedure call,远程过程调用)是一种信息传输协议。即一种通过网络从远程计算机程序上请求服务、而不需要了解底层网络技术的协议。

但是:

  • 这个xml后缀文件是什么?是用来干什么的
  • 怎么被hadoop-2.6.5用上的?

本质知其然,知其所以然的精神一探xml。不过在此不会深究,会用、够用即可。

有时候需要具备“黑盒思维”,不是“白盒思维”,知道怎么用它即可。也就是说:只需了解做成某个样子,就有利于计算机、程序来呈现出来。形象类比:不需要每个人都知道人民币在造币厂怎么生产的,我们要知道的是怎么合法、最大化地赚钱。
认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第1张图片

0、简要理解几个基本概念

了解这些基本概念,有助于理解xml。

【标记】是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文档等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。

0.0 what is 标记语言?Markup Language(ML)

现在编辑的CSDN博客的Markdown(有道云笔记等)、Web设计或开发的HTML、XML、XHTML等,都是一种标记语言。与代码有何区别?

  • 从外观、组织上看,它们有规范的标签形式,是一种注释文本的语言,目的是便于计算可以操作标签中的文本。

  • 标记语言,是一种将文本、文本相关的墙体信息结合起来,展现出关于文档结构、数据处理细节的电脑文字编码。不过用标记(标签)对其进行标识,将其与文本本身区别开来。

  • 标记语言,像其他编程语言一样,需要一个运行时环境,使其有用。这个提供运行时环境的元素称为用户代理。

标记语言举例:一段HTML代码



  标记语言


  

标记语言

标记语言 是一种 语法简单 的标记语言。 它使用易于理解的格式标记 。

  • 可以使用最简单的文本编辑器编辑。
  • 所见即所得,非技术控亦可直接阅读源码。
  • 可版本控制。
  • 实现单一源文件出版。

只要这么写,计算机上的浏览器就能轻易识别,打开后呈现如下:其中的标签、、等等不会呈现在网页上的,而且对于计算机浏览器而言都有固定的含义,知道怎么处理这些标签。
认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第2张图片
CSDN的Markdown也可以理解为一种标记语言,只要如下这么写(其中星号、等号等可理解为标签、标记),网页就会呈现想要的效果。
认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第3张图片

0.1 标准通用标记语言(SGML)

当规则被编写为 如何编写和使用这些标记时,标记就成为一种语言,并且由外部权限定义,形成标记语言的工作方式,供许多不同的人不同的场合下使用。

不然A这么标记、B那么标记、C这样标记,就乱套了,增加成本。所以,必须用一系列约定好的标记来对电子文档进行标记,以实现对电子文档的语义、结构、格式(样式)的定义。并且,这些标记必须很容易地区分内容(文本本身),易于识别。

于是国际标准化组织(ISO)发布了一个信息管理管理方面的国际标准:标准通用标记语言(Standard Generalized Markup Language,SGML)基本思想是分开文档的内容与样式。

通过其中的修饰词“标准”、“通用”就可以理解其用意了,让地球人都通用,都按这个来写。一个典型的符合SGML的文档可分为3个层次:

  • 1 结构,SGML定义了文档类型定义(DTD),为组织文档的文档元素(如:标题、段落)提供了一个框架、以及为文档元素之间的相互关系指定了规则,确保文档的一致性。
  • 2 内容,信息本身,即在标签(开始标签、结束标签之间)中的内容,如:标题、段落、表格的具体内容。
  • 3 样式,如呈现出现来的字体、颜色、大小等。

这也是SGML的工作原理。

认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第4张图片

0.2 可扩展标记语言(XML):本文主角

可扩展标记语言(eXtensible Markup Language,XML),从名字能看出大概了:可扩展、标记、语言。

修饰词:可扩展(extensible)。主要在于XML能够控制无穷无尽的标记,而且控制每个标记的方式也是无穷尽的,即允许用户对于自己的标记语言进行定义的源语言。没有被预定义,需要自定义标签,是W3C的推荐标准。

XML的出现,肯定是为了解决某一个或某一类问题的。举一例:HTML解决了在Web上显示数据,但如果需跨设备、跨平台(安卓、PC、服务器等)之间利用这个文档中的数据(文本本身),HTML是做不到的。XML的诞生是为了完善HTML的缺陷和局限性。

认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第5张图片
XML文件的后缀名是.xml,XML的定位是用于传输和存储数据,是为了不同应用、不同平台之间的数据共享和通信;是Internet环境中跨平台的、依赖于内容的技术,是当前处理结构化文档信息的有力工具;是一种简单的数据存储语言,使用一系列简单的标记来描述数据;与操作系统、编程语言无关,就能实现不同系统、不同应用之间的数据交换;独立于硬件、软件的信息传输工具。具体场景有:

  • 可作为一种简单的、小型的数据库,存储、并检索数据;
  • 传输约定格式的文件
  • 作为应用程序的配置文件(即 用于保存程序的配置的文件)【文章开头提到的Hadoop配置文件core-site.xml

XML只是一种标记语言(本质就是个纯文本),不存在将.xml文件转换为可执行的二进制代码直接运行的说法。Java、python、scala等编程语言都能操作.xml文件(有能力处理纯文本的软件都可以处理 XML)。

HTML XML
作用 显示数据 传输和存储数据
语法上明显的区别 没有右边XML的要求 要求嵌套、成对,并遵循DTD的树形结构
空格 多个空格只会显示一个 输入几个显示几个
与数据库的关系 无直接联系 与关系型、层状数据库均可对应和转换
大小写敏感性 不区分 区分
侧重点 显示数据、以及如何更好地显示数据,焦点是数据的外观 描述数据、以及如何存放数据,焦点是数据的内容

简要说明与XML的闺蜜(不是一个妈妈生的):JSON(Javascript Object Notation,js对象表示法)区别

  • 共同点:作用也是存储、交换文本信息;
  • 区别:
    • JSON比XML更小、更快、更易解析
    • JSON适用于简单的传值;XML适用于更广阔的范围
    • JSON是键值对;XML是树形结构

认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第6张图片
数据是一样的,不同的只是数据的格式而已。同样的数据,可以用XML格式传递,用XML解析出来;也可以用JSON格式传递,用JSON解析出来。

XML、JSON,这些只是包装数据的不同的格式而已,重要的是其中的数据,而不是包装的格式。选择一种最适合场景的工具就行。

1、本文主角:XML

文章开头core-site.xml,在Chrome浏览器中打开,显示如下
认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第7张图片

认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第8张图片
XML的数据结构最大的特征:树形结构。

1.0 XML学习-思维导图

认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第9张图片

1.1 XML-语法规范概述

  • 声明语句(文档第一句)
  • 必须有一个根元素
  • 标记的大小写是敏感的
  • 属性值用引号
  • 标记成对
  • 元素正确嵌套
  • 注释的正确使用

1.2 XML-文档声明

对于我刚才没写文档声明的core-site.xml文件,用IE会自动在头部加上这句(Chrome不会):


文档声明语句不是必需的。完整的文档声明如下:在XML文档的第一行


version –文档符合XML1.0规范
encoding –文档字符编码,比如”GB2312”或者”UTF-8”
standalone –文档定义是否独立使用。standalone=”no”为默认值。yes代表是独立使用,而no代表不是独立使用

1.3 XML-注释


1、注释内容不要出现- -
2、不要把注释放在标记中间;
3、注释不能嵌套
4、可以在除标记以外的任何地方放注释

可以横跨多行,如下:


1.4 XML-元素(/标记/节点)

每个XML文档必须有且只有一个根元素。

  • 是一个完全包括文档中其他所有元素的元素
  • 根元素的起始标记要放在所有其他元素的起始标记之前
  • 跟元素的结束标记要放在所有其他元素的结束标记之后

XML元素 就是指XML文件中的标签,一个标签包含:开始标签、结束标签。

http://www.baidu.com/

XML元素命名规范

  • 可以含字母、数字以及其他的字符
  • 不能以数字或者标点符号开始
  • 不能以字符 “xml”(或者 XML、Xml)开始
  • 不能包含空格
  • 不能用保留字
  • 最佳命名习惯:使名称具有描述性,见名知意
    • 简洁
    • 避免“-”字符连接,如first-name
    • 避免“.”字符连接,如first.name
    • 避免“:”字符,冒号会被转换为命名空间来使用

XML 元素是可扩展的
也就是说,可以经常在不中断应用程序的情况下进行扩展,比如:临时向原xml文档增加几个元素,而不必中断应用程序。

一个标签中也可以嵌套若干子标签。但所有标签必须合理地嵌套,绝对不允许交叉嵌套。下方是错误的:
welcome to www.baidu.com

对于XML标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理。

1.5 XML-属性

XML元素可以在开始标签中包含属性(Attribute),用于提供关于原始的额外(附加)信息。


	lijiacheng

  • 属性值用双引号或单引号包裹。如果属性值中有单引号,则用双引号包裹;如果有双引号,则用单引号包裹;如果同时有单、双引号,则用实体(转义字符),XML有5个预定义的转义字符:
实体 符号表示 描述
< < 小于
> > 大于
& &
' 单引号
" " 双引号
  • 一个元素可以有多个属性,基本格式为:
    <元素名 属性名1="属性值1" 属性名2="属性值2">

  • 特定的属性名称在同一个元素标记中只能出现一次

什么时候用属性?什么时候用元素?元数据(有关数据的数据)应当存储为【属性】,而数据本身应当存储为【元素】。

不过,在XML中,使用【属性】注意事项:

  • 属性无法包含多重的值(元素可以)
  • 属性无法描述树结构(元素可以)
  • 属性不易扩展(为未来的变化)
  • 属性难以阅读和维护

2、回到实例hadoop/core-site.xml


        
        	
        	
                fs.defaultFS
                hdfs://192.168.11.128:9000
        
        
        	
                hadoop.tmp.dir
                file:/opt/bigdata/hadoop-2.6.5/tmp
        

通过分析Hadoop源码(一般工程路径是:/hadoop-2.6.5/blob/master/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/conf/Configuration.java),start-all.sh脚本启动Hadoop集群的过程中:

  • 1 创建一个Configuration类的实例:Configuration conf = new Configuration();
  • 2 用addDefaultResource("core-site.xml")方法从指定路径(CLASSPATH)加载到core-site.xml文件
  • 3 用get?()读取core-site.xml文件中配置的数据,用于启动hadoop时生效。

通过上述步骤就xml文件产生了它应有的作用!
认识XML:概念、语法、实例(Hadoop读取core-site.xml中数据的机制)_第10张图片

参考大佬博客:
hadoop配置文件加载机制
hadoop配置文件加载顺序:分析的很6

你可能感兴趣的:(计算机理论与基础,XML,可扩展标记语言,标记,markup,语言)