一、XML定义:可扩展标记语言,由W3C组织技术发布。XML除可以保存数据外,经常用作软件配置文件,描述程序个模块之间的关系。
二、xml文件可分为以下几个部分内容:文档声明,元素,属性,注释,CDATA区、特殊字符,处理指令(processing instruction)
1、在编写xml文档时,需要先使用文档声明,声明xml文档的类型。
(1)最简单的文档声明:<?xml version="1.0" ?>
(2) 用encoding属性说明文档的字符编码:
<?xml version="1.0" Encoding="UTF-8" ?>
(3)使用standalone属性说明该文档是否独立:

<?xml version="1.0" Encoding="UTF-8"  standalone="yes"?>

二、XML允许用户自定义标签,一个标签用于描述一段数据,一个标签分为开始标签和结束标签,两者之间可以使用其他标签描述其他数据。
三、XML文件
一个XML文件可以分为以下几个部分:
1、文档声明:<?xml version="1.0" encoding="UTF-8"?>
注意:XML声明必须出现在文档的第一行。保证源文件编码与声明语句声明的编码要一致,encoding属性告诉解析器以特定的编码解析源文件
2、元素:XML中出现的标签,一个标签分为开始标签和结束标签。标签的写法形式:<a></a>或者<a/>。一个标签也可以嵌套若干子标签,但所有的标签必须合理的嵌套,绝对不允许交叉嵌套。格式良好的xml文档有且仅有一个根标签,其他的标签都是这个根标签的子孙标签。 元素标记名称规范:可以包含字母,数字以及其它字符
(1)区分大小写,<p/>和<P/>是不同标记
(2)不能以数字或者下划线“_”开头
(3)不能以字符组合xml,或者Xml,xMl,xmL,XMl,xML,XML(即xml的大小写任何组合)等开头。
(4)不能包含空格,<书 名></书 名>是错误的。
(5)不能包含冒号“:”
推荐的元素标记命名建议:
(1)命名尽量简短,减少XML大小
(2)慎重使用非英文字符,某些应用程序可能不支持非英文字符。
(3)不要使用点号“.”,点号在很多程序语言中表示引用等特殊含义。
(4)不要使用减号“-”,以下划线“_”代替,避免与表达式中的减号运算符冲突。
3、属性,一个标签可以定义很多属性,属性可以被改写成以子元素的形式描述信息,效果相同。

<售价>  
          <单位>元</单位>  
          <价格>58</价格>  
    </售价>

属性值一定要用双引号或者单引号括起来。
属性命名规则与标签命名规则一样。
4、注释

<?xml version="1.0" encoding="UTF-8" ?>  
    <!-- 注释 -->  
    <书架>  
         <书>  
             <书名>好书</书名>  
             <作者>某人</作者>  
         </书>  
     </书架>

注释不能出现在XML声明之前。
一对注释符号之间不能包含另外一对注释符号,一下为错误的示例。

<!-- 注释
 .......
........
<!-- 注释 -->  
-->

注释中出现中文无法解析问题: 解析器虽然会忽略注释内容,但是解析器对内容执行了读取动作,如若编码不当,就会出现无法解析问题。由于解析器读取注释内容与读取标签等其它内容后的处理方式不一样(解析器读取注释内容后忽略之),导致对这个问题的处理方式与之前讲XML中标签出现中文无法解析问题处理方式稍有区别。
注释出现中文代码解决方案:
(1).解决方案一:
如果注释中出现中文字符,而且XML文件声明中没有指定encoding属性,那么需要将encoding属性设置为GB2312即可,无需考虑源文件是否保存为GB2312编码格式。(这个与前面所讲的标签出现中文无法解析的处理方式不同)
(2)解决方案二:
将XML源文件保存为utf-8编码格式即可,无需修改XML声明中的encoding属性值。这是因为解析器默认会以utf-8编码读取内容。
我们可以向Tomcat容器/conf/server.xml文件中添加一行中文注释 来验证,添加注释后无法启动Tomcat,通过第一个方法后就可以正常启动了。
5、 空格和换行处理
对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的。

<address>WorshintonDC.USA</address>  
    <!--这行标签括起来的值仅仅是WorshintonDC.USA这个字符串--> 


     <address>  
                        WorshintonDC.USA  
    </address>  
    <!--包含一个回车符,一个制表符,字符串WorshintonDC.USA,一个回车符-->

由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,使用换行和缩进等方式来让原文件中的内容清晰可读的“良好”书写习惯可能要被迫改变。

5、CDATA区:
在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理。
遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出。

语法:<![CDATA[ 内容 ]]>
  <![CDATA[
  <itcast>
  <br/>
  </itcast>
  ]]>

6、特殊字符

对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理。

XmlRootElement定义多个namespace_解析器


7、处理指令(processing instruction)

处理指令用来指挥解析引擎如何解析XML文档内容。

例如,在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。

<?xml-stylesheettype="text/css" href="1.css"?>

处理指令必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。