xml_xmlhttprequest - CSDN
xml 订阅
可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。 [1]  在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。 [2] 展开全文
可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。 [1]  在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。 [2]
信息
外文名
Extensible Markup Language
类    型
标记语言
缩写
XML(也做文件扩展名)
中文名
可扩展标记语言
其他称呼
可扩展置标语言、可扩展标识语言
中文
可扩标言
可扩展标记语言简介
可扩展标记语言与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,可扩展标记语言仅仅是存储数据。事实上它与其他数据表现形式最大的不同是:可扩展标记语言极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同。 [3]  XML的简单易于在任何应用程序中读/写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其他的数据交换格式,但不久之后它们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS、Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析它,并以XML格式输出结果。 [3] 
收起全文
精华内容
参与话题
  • XML入门到精通2017视频教程

    千人学习 2018-10-22 21:38:08
    本课程共11个教学视频,10小时授课时间,该课是在学习完数据库,JAVA,JSP等课程后,为后面学习SSH框架,WEB Servic等技术的基础课程;深入浅出的讲解,大量的课后练习与实训项目,课程PPT,源代码已经全部上传到...
  • xml格式详解

    万次阅读 2019-04-29 17:35:06
    一、xml基础详解: 1、概述: xml:即可扩展标记语言,xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。xml是...

    一、xml基础详解:

    1、概述:

        xml:即可扩展标记语言,xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。xml是当前处理结构化文档信息中相当给力的技术,xml有助于在服务器之间穿梭结构化数据,这使得开发人员更加得心应手的控制数据的存储和传输。

    Xml用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。Xml是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

    2、xml的特点及作用:

    特点:

    v xml与操作系统、编程语言的开发平台都无关;

    v 实现不同系统之间的数据交互。

    作用:

    v 配置应用程序和网站;

    v 数据交互;

    v Ajax基石。

    在配置文件里边所有的配置文件都是以XMl的格式来编写的。

    跨平台进行数据交互,它可以跨操作系统,也可以跨编程语言的平台。

    Ajax是现在目前比较流行的一个网络交互的技术。Ajax里面最后一个x实际上就是xml的缩写。Xml(Extensible Markup Language)是可扩展标记语言

    一个xml文档必须要有第一行的声明和它的文档元素的描述信息就可以了。

    3、xml声明

    例子:

    注:xml声明一般是xml文档的第一行;xml声明由以下几个部分组成:

    4、根元素

    它是xml文档里面唯一的;它的开始是放在最前面,结束是放在最后面。

    5、元素:

    (1) 所有的xml元素都必须有结束标签;

    (2) xml标签对大小写敏感;

    (3)  xml必须正确地嵌套;

    (4)元素的命名规则:

    名称中可以包含字母、数字或者其他的字符;

    名称不能以数字或者标点符号开始;

    名称中不能包含空格。

    (5)空元素

    6、属性

    (1)语法

    <元素名 属性名=“属性值”/>

    例:<Student ID=“S100”>

           <Name>Tom</Name>

    </Student>

    (2)注意:

    属性值用双引号包裹;一个元素可以有多个属性,它的基本格式为:

    <元素名 属性名=“属性值” 属性名=“属性值”>;

    属性值中不能够直接包含<.”,&。

    7、实体:

    在xml中,一些字符拥有特殊的意义。如果把字符“<”放在xml元素中,会发生错误,这是因为解析器会把它当作新元素的开始,这样会产生xml错误:

    为了避免这个错误,请用实体引用来代替“<”字符:

    xml中5个预定义实体

    8、注释

    注:注释内容中不要出现”--”;不要把注释放在标签中间;注释不能嵌套。

    9、总结:

    (1)xml描述的是文档的内容与语义,而不是文档应当如何显示;

    (2)格式正规(well formed)的xml文档

    遵循如下规则的xml文档称为格式正规的xml文档:

    v 必须有xml声明语句;

    v 必须有且仅有一个根元素;

    v 标签大小写敏感;

    v 属性值用双引号;

    v 标签成对;

    v 空标签关闭;

    v 元素正确嵌套。

    (3)有效的(valid)xml文档。首先xml文档是个格式正规的xml文档,然后又需要满足DTD的要求,这样的xml文档称为有效的xml文档;

    10、解析器

    11、命名空间

    11.1、xml命名空间(xml Namespaces)

    (1)xml命名空间提供避免元素命名冲突的方法。

    (2)在xml中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。

    11.2、xml命名空间示例

    (1)使用前缀示例

    与仅仅使用前缀不同,我们为标签添加了一个xmlns属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。

    二、DTD技术——xml文件的验证机制

    1、DTD概述:

    文档类型定义——Document Type Definition

    DTD用来描述xml文档的结构,一个DTD文档包含:  

    元素的定义规则;元素之间的关系规则;属性的定义规则。

    2、为什么要用DTD呀

    v 有了DTD,每个xml文件可以携带一个自身格式的描述,所谓格式描述就是我的xml文档里面可以写哪些东西,比如元素、属性;

    v 有了DTD,不同组织的人可以使用一个通用DTD用来交换数据,xml是随意定义的,有了DTD,我们可以限制多个公司之间按照这种DTD的规则来编写xml文档,由于DTD都是统一格式,所以不同的公司之间,不同的组织之间就可以用这种通用的xml文档格式进行交互数据了;

    v 应用程序可以使用一个标准DTD校检从外部接收的xml数据是否有效。

    3、如何编写一个DTD

    DTD分成三大类,第一是内部DTD,第二是外部DTD,第三是内外结合的DTD。

    (1)内部DTD文档(Students.xml):

    (2)就是说这个xml文档里面既包含xml定义,又包含DTD的定义。

    这个[]里面是DTD的定义的内容,就是第一个叫内部DTD文档。

    (3)外部DTD文档(Students.xml  Students.dtd):

    所谓外部就是DTD的定义和我们的xml文档是在不同的文件里面。

    那么外部的DTD如何使用呢?那就需要在前面的xml文档的根元素的上面这个位置跟刚才内部的是一样的,要写上

    这类年改革文档在同一个文件夹下面,就可以了。

    有内部DTD了,为什么还要学习外部DTD呢??

    内部的DTD,它只能验证当前的这个xml文档。那假如说,我们有一个DTD需要验证多个xml文档的话,那就直接使用外部DTD就行。

    (4)内外部DTD文档结合

    4、DTD的具体定义——元素的定义

    元素名称:是指xml文档里面的元素名称

    元素类型:

    (1)EMPTY

    示例第一个是对的,第二个是错误的,因为它有内容了。

    (2)#PCDATA

    第一个是对的,第二个是错误的。

    (3)纯元素类型的DTD语法

    (4)ANY

    5、定义属性的语法结构

    xml文档携带数据的方式,不仅仅是xml的元素的内容,还可以是元素的属性。

    所以说在DTD里面我们有必要对属性进行限制。

    (1)编写属性验证的语法规则:

    (2)属性类型——CDATA

    CDATA是表示属性的值,可以是任何字符,这里包括数字和中文。

    问题一:属性的CDATA与元素的CDATA节有何区别呢??

    属性的CDATA表示属性值是任何的字符,元素里的CDATA节是表示在CDATA节里面的内容不被xml文档进行解析。

    问题二:#PCDATA与CDATA有何区别??

    #PCDATA是限制元素里面的内容是字符类型的,而这个CDATA是限制属性里面的内容是字符类型。

    (3)属性类型——ID

    表明该属性的取值必须是唯一的。

    (4)属性类型——IDREF/IDREFS

    v IDREF是指它的值要指向文档当中其它地方声明的ID。把IDREF当成数据库的外键,把ID当成主键理解就行;

    v IDREFS同IDREF,但是可以具有由空格分开的多个引用;

    (5)属性类型——Enumerated

    预先定义了一些值,属性的值必须在所列出的值的范围内

    (6)属性特点——#REQUIRED

    它表示元素的所有的实例都必须有该属性的值(NOT NULL)

    (7)属性特点——#IMPLIED

    这就表示该属性的值是可以被忽略的。

    (8)属性特点——#FIXED

    元素中该属性的值必须为指定的固定值。

    (9)属性特点——Default

    为属性提供一个默认的值。

    三、实体

    1、实体概述

    实体,简单理解就是C#中的常量,我们在DTD里面定义,在xml文档里面去使用。(实际上就是自定义实体,与前面的预定义实体差不多是一回事)。

    2、实体的定义

    四、xml之Schema技术

    1、Schema概述:xml Schema是用一套预先规定的xml元素和属性创建的,这些元素和属性定义了xml文档的结构和内容模式。Xml Shema规定xml文档实例的结构和每个元素/属性的数据类型。

    理解:对于Schema来讲,我们可以将shema比喻成为是表结构。在表结构里,定义一些数据的限制要求。然后我们xml文档呢就相当于是数据表将来要存储的数据u,也就是数据库里面的数据表数据了,所以整体来讲的话schema它就是用于验证xml文档的。

    2、有了DTD,为什么要用Schema呢?

    (1)DTD的局限性

    DTD不遵守xml语法(写xml文档实例时用一种语法,写DTD的时候用另外一种语法);DTD数据类型有限(与数据库数据类型不一致);DTD不可扩展;DTD不支持命名空间(命名冲突)。

    (2)Schema的新特性

    Shema基于xml语法的;Shema可以用能处理xml文档的工具处理;Schema大大扩充了数据类型,可以自定义数据类型;Schema支持元素的继承——Object-Oriented;Shema支持属性组。

    3、Shema(模式):其作用与DTD一样,也是用于验证xml文档的有效性,只不过它提供了比DTD更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个xml文件,而DTD则不是。

    4、所有的Schema文档,其根元素必须为Schema。

    5、Schema的文档结构

    6、Schema的数据类型

    6.1、Schema的数据类型概述

    6.2、简单类型:

    (1)内置的数据类型:

    基本的数据类型;

    扩展的数据类型;

    (2)用户自定义简单类型(通过simpleType定义)。

    6.3、复合类型(通过complexType定义)

    6.4、数据类型的特征

    7、Schema的元素类型

    7.1、Schema根元素

    作用:包含已经定义的Schema

    用法:<xs:schema>

    属性:xmlns/targetNamespace/elementFormDefault

    例子:

    7.2、element元素

    作用:声明一个元素

    属性:name/type/ref/minOccurs/maxOccurs

    例子:

    7.3、group元素

    作用:把一组元素声明组合在一起

    属性:name

    例子:

    7.4、attribute元素

    作用:声明一个属性

    属性:name/type/use/default/fixed

    例子:

    7.5、attributeGroup元素

    作用:把一组属性声明组合在一起

    属性:name/ref

    例子:

    7.6、simpleType元素

    作用:定义一个简单类型,它决定了元素和属性值的约束和相关信息

    属性:name

    常用的两种方式:restriction——>一个约束;list——>从列表中选择。

    (1)simpleType元素的子元素——>restriction

    子元素为:<xs:restriction>——>定义一个约束条件

    例子:

    (2)simpleType元素的子元素——>list

    子元素为:<xs:list>——>从一个特定数据类型的集合中选择定义一个简单类型元素。

    例子:

    7.7、complexType元素

    作用:定义一个复合类型,它决定了一组元素和属性值的约束和相关信息。

    属性:name

    常用的两种方式:sequence——>一个序列;choice——>设置选择项。

    (1)complexType元素——sequence

    作用:给一组元素一个特定的序列

    例子:

    (2)complexType元素——choice

    作用:把一组属性声明组合在一起,以便可以被复合类型应用

    属性:name/ref

    例子:

    7.8、complexType与simpleType区别

    simpleType类型的元素中不能包含元素或者属性;

    当需要声明一个元素的子元素和或属性时,用complexType;

    当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType。
    --------------------- 
    原文:https://blog.csdn.net/com_ma/article/details/73277535 

    展开全文
  • XML——XML介绍和基本语法

    万次阅读 多人点赞 2018-08-30 10:47:23
    1.XML历史 gml(1969)-&gt;sgml(1985)-&gt;html(1993)-&gt;xml(1998) 1969 gml(通用标记语言),主要目的是要在不同的机器之间进行通信的数据规范 1985 sgml(标准通用标记语言) 1993 html...

    from:https://blog.csdn.net/gavin_john/article/details/51511180

    1.XML历史

    gml(1969)->sgml(1985)->html(1993)->xml(1998)

    • 1969 gml(通用标记语言),主要目的是要在不同的机器之间进行通信的数据规范
    • 1985 sgml(标准通用标记语言)
    • 1993 html(超文本标记语言,www网)

    html语言本身是有一些缺陷的 
    (1)不能自定义标签 
    (2)html本身缺少含义 
    (3)html没有真正的国际化

    有一个中间过渡语言,xhtml: 
    html->xhtml->xml

    • 1998 xml extensiable markup language 可扩展标记语言

    2.为什么需要XML

    1.需求1 
    两个程序间进行数据通信? 
    2.需求2 
    给一台服务器,做一个配置文件,当服务器程序启动时,去读取它应当监听的端口号,还有连接数据库的用户名和密码?

    在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签描述其他数据,以此来实现数据关系的描述。

    3.XML常见应用

    1.XML的出现解决了程序间数据传输的问题: 
    比如QQ之间的数据传送,用XML格式来传送数据,具有良好的可读性,可维护性

    2.XML可以做配置文件 
    XML文件做配置文件可以说非常普遍,比如我们的Tomcat服务器的server.xml,web.xml。再比如我们的structs中的structs-config.xml文件,和hibernate的hibernate.cfg.xml等等。

    3.XML可以充当小型的数据库 
    XML文件可以做小型数据库,也是不错的选择,我们程序中可能用到一些经常要人工配置的数据,如果放在数据库中读取不合适(因为这会增加维护数据库的工作),则可以考虑直接用XML来做小型数据库。这种方式直接读取文件显然要比读数据库快。比如msn中保存用户聊天记录就是用XML文件。

    入门案例:用XML来记录一个班级信息。

    <?xml version="1.0" encoding="gb2312"?>
    
    <class>
        <stu id="001">
            <name>杨过</name> 
            <sex>男</sex>
            <age>20</age>
        </stu>  
        <stu id="002">
            <name>小龙女</name>    
            <sex>女</sex>
            <age>21</age>
        </stu>
    </class>

    我们可以用浏览器打开:

    XML描述班级信息

    那么我们的XML能不能像html那样显示在网页上呢?也是可以的,它也可以用css来修饰,但我们不用,我们只需要使用XML来存储数据。

    在这个例子中,如果我们把第一行的编码改为utf-8,再用浏览器打开会报错,这是为什么呢?

    因为xml文件的默认编码是ANSI,即美国国家标准协会制定的编码,它根据不同的国家和地区制定了不同的标准,那么在中国就是GB2312,所以我们用GB2312编码不会出错,而用UTF-8会报错。

    解决办法就是将该XML文件更改为UTF-8的编码模式即可。

    4.XML语法

    一个XML文件分为如下几部分内容: 
    1.文档声明 
    2.元素 
    3.属性 
    4.注释 
    5.CDATA区、特殊字符 
    6.处理指令(processing instruction)

    4.1.XML语法-文档声明

    <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
    • XML声明放在XML文档的第一行 

    XML声明由以下几个部分组成:

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

    4.2.XML语法-元素(或者叫标记、节点)

    (1)每个XML文档必须有且只有一个根元素

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

    (2)XML元素指的是XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写方式,例如

    • 包含标签体:
    <a>www.sohu.com</a>
    • 不含标签体的:
    <a></a>,简写为:<a/>
    • (3)一个标签中也可以嵌套若干子标签。但所有标签必须合理地嵌套,绝对不允许交叉嵌套,例如
    <a>welcome to <b> www.sohu.com </a></b>
    • 这种情况肯定是要报错的。

    (4)对于XML标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理。例如下面两段内容的意义是不一样的。

    <stu>xiaoming</stu>
    • 和如下:
    <stu>
        xiaoming
    </stu>

    (5)由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,要特别注意。

    (6)命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守以下规范:

    • 区分大小写,例如,元素P和元素p是两个不同的元素
    • 不能以数字或下划线”_”开头
    • 元素内不能包含空格
    • 名称中间不能包含冒号(:)
    • 可以使用中文,但一般不这么用

    4.3.XML语法-属性

    <student id="100">
        <name>Tom</name>
    </student>

    (1)属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:

    XML实体字符

    (2)一个元素可以有多个属性,它的基本格式为:

    <元素名 属性名1="属性值1" 属性名2="属性值2">
    • (3)特定的属性名称在同一个元素标记中只能出现一次 

    (4)属性值不能包括<,>,&,如果一定要包含,也要使用实体

    4.4.XML语法-注释

    XML的注释类似于HTML中的注释:

    <!--这是一个注释-->
    • (1)注释内容不要出现-- 

    (2)不要把注释放在标记中间; 
    (3)注释不能嵌套 
    (4)可以在除标记以外的任何地方放注释

    4.5.XML语法-CDATA节

    假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的<,>,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。

    所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。

    语法如下:

    <![CDATA[
        ......
    ]]>

    CDATA节中可以输入任意字符(除]]>外),但是不能嵌套!

    如下例,这种情况它不会报错,而如果不包含在CDATA节中,就会报错:

    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
        <intro><![CDATA[ad<<&$^#*k]]></intro>
    </stu>

    .6.XML语法-处理指令

    处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:

    比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:

    name{
        font-size:80px;
        font-weight:bold;
        color:red;
    }
    
    sex{
        font-size:60px;
        font-weight:bold;
        color:blue;
    }
    
    sex{
        font-size:40px;
        font-weight:bold;
        color:green;
    }

    我们在xml文件中使用处理指令引入这个css文件,如下:

    <?xml version="1.0" encoding="gb2312"?>
    <?xml-stylesheet href="my.css" type="text/css"?>
    <class>
        <stu id="001">
            <name>杨过</name> 
            <sex>男</sex>
            <age>20</age>
        </stu>  
        <stu id="002">
            <name>小龙女</name>    
            <sex>女</sex>
            <age>21</age>
        </stu>
    </class>

    这时候我们再用浏览器打开这个xml文件,会发现浏览器解析出一个带样式的视图,而不再是单纯的目录树了:

    XML修改样式

    但是XML的处理指令不要求掌握,因为用到的很少。

    5.格式正规的XML文档-小结

    语法规范

    1.XML声明语句 
    2.必须有一个根元素 
    3.标记大小写敏感 
    4.属性值用引号 
    5.标记成对 
    6.空标记关闭 
    7.元素正确嵌套

    from:https://blog.csdn.net/qq_38254978/article/details/77870598

    什么是xml文件格式

    • 我们要给对方传输一段数据,数据内容是“too young,too simple,sometimes naive”,要将这段话按照属性拆分为三个数据的话,就是,年龄too young,阅历too simple,结果sometimes naive。我们都知道程序不像人,可以体会字面意思,并自动拆分出数据,因此,我们需要帮助程序做拆分,因此出现了各种各样的数据格式以及拆分方式。比如,可以是这样的数据为“too young,too simple,sometimes naive”然后按照逗号拆分,第一部分为年龄,第二部分为阅历,第三部分为结果。
    • 也可以是这样的数据为“too_young* too_simple*sometimes_naive”从数据开头开始截取前面十一个字符,去掉号并把下划线替换为空格作为第一部分,再截取接下来的十一个字符同样去掉并替换下划线为空格作为第二部分,最后把剩下的字符同样去号体会空格作为第三部分。
    • 这两种方式都可以用来容纳数据并能够被解析,但是不直观,通用性也不好,而且如果出现超过限定字数的字符串就容纳不了,也可能出现数据本身就下划线字符导致需要做转义。基于这种情况,出现了xml这种数据格式, 上面的数据用XML表示的话可以是这样
    <person age="too young" experience="too simple" result="sometimes naive" />

    也可以是这样

    <person>
        <age value="too young" />
        <experience value="too simple" />
        <result value="sometimes naive" />
    </person>

    两种方式都是xml,都很直观,附带了对数据的说明,并且具备通用的格式规范可以让程序做解析。如果用json格式来表示的话,就是下面这样看出来没,其实数据都是一样的,不同的只是数据的格式而已,同样的数据,我用xml格式传给你,你用xml格式解析出三个数据,用json格式传给你,你就用json格式解析出三个数据,还可以我本地保存的是xml格式的数据,我自己先解析出三个数据,然后构造成json格式传给你,你解析json格式,获得三个数据,再自己构造成xml格式保存起来,说白了,不管是xml还是json,都只是包装数据的不同格式而已,重要的是其中含有的数据,而不是包装的格式。

    XML文件创建格式

    • 例:
    <?xml version="1.0" encoding="utf-8" ?>
    <root>
        <part id = "01" name="选项一">
            <name>我是徐茅山</name>
            <age>今年20岁</age>
            <sex>男</sex>
        </part>
        <part id="02" name="选项二">
            <name>我是李逍遥</name>
            <age>今年22岁</age>
            <sex>男</sex>
        </part>
    </root>
    • 开始的

    xml文件的解析

    • 这里只是简单的提一下关于xml文件的解析,我使用的是比较流行的dom4j解析,[dom4j的文件下载地址](“https://dom4j.github.io/“)
    • 实例:
    package com.xinsi.qi.utils;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.SAXReader;
    
    import java.io.File;
    import java.util.List;
    
    public class Dom4jXml {
        public void test(){
            try {
                File inputFile = new File("F:\\J2EE学习资料\\demoLes03\\web\\WEB-INF\\test.xml");
                SAXReader reader = new SAXReader();
                Document document = reader.read(inputFile);
                System.out.println("Root element :"+document.getRootElement().getName());
    
                Element classElement = document.getRootElement();
    
                List<Node> nodes = document.selectNodes("/class/part[@id='02']");
    
                System.out.println("--------------------");
    
                for (Node node:nodes){
                    System.out.println("标签名=:"+node.getName());
                    System.out.println("姓名:"+node.selectSingleNode("name").getText());
                    System.out.println("年龄:"+node.selectSingleNode("age").getText());
                    System.out.println("性别:"+node.selectSingleNode("sex").getText());
                }
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
    
    }
    • 首先创建一个xml文件,这里使用的xml文件就是上面的xml例子,使用dom4j,先创建文件,将文件引入。
     File inputFile = new File("F:\\J2EE学习资料\\demoLes03\\web\\WEB-INF\\test.xml");
    • 再创建dom4j的读取文件类,来读取xml文件
      SAXReader reader = new SAXReader();
    • Document是获取根元素类,控制台输出时,如下
    System.out.println("Root element :"+document.getRootElement().getName());
    输出Root element :root,该文件的根元素名称为root

    Element类是获取根元素内的元素

    • List nodes = document.selectNodes(“/class/part[@id=’02’]”) 这段代码的意思是,定位到该元素属性的位置,使用该方法还需要下载,jaxen.jar包,jaxen的下载地址
    • @id=’02’的意思是定位到id为02的元素属性,以遍历的形式输出出来。
    for (Node node:nodes){
    System.out.println("标签名=:"+node.getName());
    System.out.println("姓名:"+node.selectSingleNode("name").getText());
    System.out.println("年龄:"+node.selectSingleNode("age").getText());
    System.out.println("性别:"+node.selectSingleNode("sex").getText());
    }
    • 最终控制台的输出结果为:
    标签名=:part
    姓名:我是李逍遥
    年龄:今年22岁
    性别:男
    展开全文
  • xml是啥?是干啥用的?

    万次阅读 多人点赞 2017-11-25 07:55:22
    XML,Extensible Markup Language,扩展性标识语言。文件的后缀名为:.xml 据说,java是一门专业操作XML的语言。 是干啥用的? 为了便于不同应用、不同平台之间的数据共享和通信。   具体点的作用为: (1)可作为一...

    ————————————初识——————————————

    是什么?

    XMLExtensible Markup Language,扩展性标识语言。文件的后缀名为:.xml。就像HTML的作用是显示数据,XML的作用是传输和存储数据。

    据说,java是一门专业操作XML的语言。

    是干啥用的?

    为了便于不同应用、不同平台之间的数据共享和通信。

     

    具体点的作用为:

    (1)可作为一种简单的数据库,存储并检索数据;

    (2)传输约定格式的文件;

    (3)做软件的配置文件。【配置文件:保存软件设置的文件】

    ————————————比较——————————————

    XML的哥哥——HTML

    出生:

    XML的出生是为了完善HTML的缺陷和局限性。

    在使用方面的区别如下:

    比较内容

    HTML

    XML

    作用

    显示数据

    传输和存储数据

    语法

    无右述要求

    要求嵌套、配对,并遵循DTD的树形结构

    空格

    多个时只显示一个

    输入几个显示几个

    与数据库的关系

    无直接联系

    与关系型和层状数据库均可对应和转换

    大小写敏感性

    不区分

    区分

    XML的闺蜜——JSON

    先来说说“哥哥”和“闺蜜”的区别:哥哥是指一个妈生的;闺蜜是非亲的。

    JSONJavascript Object Notationjs对象表示法。作用也是存储和交换文本信息。

    两者比较:JSONXML更小,更快,更易解析,so,也更受欢迎。

    两者作用范围:JSON适用于简单的传值,XML适用于更广阔的范围。

    ————————————更深层次的认识————————————

    XML的数据结构——树形结构

    具体是怎么体现的,读者可参照下文实例中的代码,一看便明白。

    值得关注的是,就像一棵书只有一个根,XML只能有一个根元素。

    思维导图

    下面附上小编画的思维导图,欢迎读者交流。

    ————————————举例——————————————

    .xml文件中的代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <email xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="email.xsd">
    <to>liuwei8809@163.com</to>
    <form>hellokitty@163.com</form>
    <title>about loving</title>
    <body>I love you forever!</body>
    <date>2008-11-12</date>
    </email>

    .xsd文件中的代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="email">
            <xs:complexType>
              <xs:sequence>
    			<xs:element name="to" type="xs:string"></xs:element>
    			<xs:element name="from" type="xs:string"></xs:element>
    			<xs:element name="title" type="xs:string"></xs:element>
    			<xs:element name="body" type="xs:string"></xs:element>
    			<xs:element name="date" type="xs:date"></xs:element>
             </xs:sequence>
           </xs:complexType>
       </xs:element>
    </schema>

    实现的效果:


    展开全文
  • XML编程

    千人学习 2018-10-22 21:38:06
    在现代的开发之中,XML技术无处不在,在各个开发框架中,也都到处充斥着XML配置文件的身影。本课程将为读者讲解XML的产生背景,并且详细分析了HTML与XML的区别、XML核心语法,重点在于XML的解析技术(DOM、SAX、DOM4...
  • xml & json 转换工具

    2020-07-30 23:33:32
    NULL 博文链接:https://black-angel.iteye.com/blog/339722
  • JSON-XML转换工具

    千次阅读 2017-04-07 15:19:05
    json-xml转换工具
    package com.zhihua.JsonXML;
    
    import java.io.CharArrayReader;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.xml.XMLSerializer;
    
    /**
     * JSON-XML转换工具
     * <请替换成功能描述> <br>
     * <请替换成详细描述>
     * @author caizh
     * @since [1.0.0]
     * @version [1.0.0,2017年2月13日]
     */
    public class JsonXmlUtils {
    
        private static final XMLSerializer SERIALIZER = new XMLSerializer();
    
        /**
         * xml转化为json
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param xml
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        public static String xmlToJSON(String xml){
            return SERIALIZER.read(xml).toString();
        }
    
        /**
         * json转化为xml
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param json
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        public static String jsonToXML(String json){
            JSONObject jobj = JSONObject.fromObject(json);
            String xml = SERIALIZER.write(jobj);
            return xml;
        }
    
        /**
         * json转map<String,Object>
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param jsonStr
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        public static Map<String,Object> jsonToMap(String jsonStr){
            Map<String,Object> map = new HashMap<String,Object>();
            //最外层解析
            JSONObject json = JSONObject.fromObject(jsonStr);
            for(Object k:json.keySet()){
                Object v = json.get(k);
                //如果内层还是数组的话,继续解析
                if(v instanceof JSONArray){
                    List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
                    @SuppressWarnings("unchecked")
                    Iterator<JSONObject> it = ((JSONArray)v).iterator();
                    while(it.hasNext()){
                        JSONObject json2 = it.next();
                        list.add(jsonToMap(json2.toString()));
                    }
                    map.put(k.toString(), list);
                }else{
                    map.put(k.toString(), v);
                }
            }
            return map;
        }
    
        /**
         * json转map<String,String>
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param jsonStr
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        public static Map<String,String> jsonToMaoString(String jsonStr){
            Map<String,String> map = new HashMap<String,String>();
            //最外层解析
            JSONObject json = JSONObject.fromObject(jsonStr);
            for(Object k:json.keySet()){
                Object v = json.get(k);
                if(null!=v){
                    map.put(k.toString(), v.toString());
                }
            }
            return map;
        }
    
        /**
         * xml转map
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param xml 内容
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        public static Map<String,Object> xmlToMap(String xml){
            return xmlToMap(xml,null);
        }
    
        /**
         * xml转map
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param xml xml内容 
         * @param xpath 指定路径(不用指定根目录)
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        @SuppressWarnings("unchecked")
        public static Map<String, Object> xmlToMap(String xml, String xpath) {
            // SAXReader就是一个管道,用一个流的方式,把xml文件读出来
            SAXReader reader = new SAXReader();
            //下面的是通过解析xml字符串的
            Document doc = null;
            try{
                doc = reader.read(new CharArrayReader(xml.toCharArray()));
            }catch(DocumentException e){
                e.printStackTrace();
            }
            // 获取根节点
            Element rootElt = doc.getRootElement(); // 获取根节点
            //System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
            Map<String, Object> map = new HashMap<String, Object>();
    
            if(xpath==null || xpath.equals("")){//转换全部
                map.put(rootElt.getName(), eleTomap(rootElt));
            }else{
                Element ele = (Element) rootElt.selectSingleNode(xpath);
                if(ele!=null){
                    //判断是否是多个匹配
                    if(rootElt.selectNodes(xpath).size()>1){
                        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
                        for (Element element : (List<Element>)rootElt.selectNodes(xpath)) {
                            list.add(eleTomap(element));
                        }
                        map.put(ele.getName(), list);
                    }else{
                        map.put(ele.getName(), eleTomap(ele));
                    }
                }
            }
            return map;
        }
    
        /**
         * element对象转化为map
         * <请替换成功能描述> <br>
         * <请替换成详细描述>
         * @param rootElt
         * @return
         * @author caizh
         * @since [1.0.0]
         * @version [1.0.0,2017年2月13日]
         */
        @SuppressWarnings("unchecked")
        private static Map<String, Object> eleTomap(Element rootElt) {
            Map<String, Object> map = new HashMap<String, Object>();
            List<Element> eles = rootElt.elements();
            for (Element ele : eles) {
                if(ele.elements().size()==0){
                    map.put(ele.getName(), ele.getTextTrim());
                }else if(ele.elements().size()==1){
                    map.put(ele.getName(), eleTomap(ele));
                }else {//>1
                    if(map.containsKey(ele.getName())){
                        List<Map<String, Object>> list = null;
                        if(List.class.isAssignableFrom(map.get(ele.getName()).getClass())){
                            list = (List<Map<String, Object>>) map.get(ele.getName());
                        }else{
                            list = new ArrayList<Map<String,Object>>();
                            list.add((Map<String, Object>)map.get(ele.getName()));
                        }
                        list.add(eleTomap(ele));
                        map.put(ele.getName(), list);
                    }else{
                        map.put(ele.getName(), eleTomap(ele));
                    }
                }
                // System.out.println("  " + ele.getName()); // 拿到节点的名称
            }
            return map;
        }
    
        public static void main(String[] args) {
            String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><result><code>0</code><subcode>0</subcode><message></message><default>0</default><data><album><limit>0</limit><pic><batchId>1453602570122000</batchId><browser>0</browser><cameratype> </cameratype><cp_flag>true</cp_flag><cp_x>547</cp_x><cp_y>320</cp_y><desc/><exif><exposureCompensation/><exposureMode/><exposureProgram/><exposureTime/><flash/><fnumber/><focalLength/><iso/><lensModel/><make/><meteringMode/><model/><originalTime/></exif><forum>0</forum><frameno>0</frameno><height>640</height><id>0</id><is_weixin_mode>0</is_weixin_mode><ismultiup>0</ismultiup><lloc>NDR0F8gbCAo3pFYmIIcrbgAAAAAAAAA!</lloc><modifytime>1453602570</modifytime><name>photo-blank</name><origin>0</origin><origin_upload>0</origin_upload><origin_url/><owner>136038423</owner><ownername>136038423</ownername><photocubage>142480</photocubage><phototype>5</phototype><picmark_flag>0</picmark_flag><picrefer>1</picrefer><platformId>0</platformId><platformSubId>0</platformSubId><poiName/><pre>http://b110.photo.store.qq.com/psbe?/V10l2eOl01dgnV/FhSHGWUG2FNGCJERJqsUvB2QX359X35Twlgea5uXK.Rn4cdhY4nTI*1EvrFjw83m/a/dG4AAAAAAAAA&amp;bo=SAaAAgAAAAAFB.g!</pre><raw/><raw_upload>0</raw_upload><rawshoottime>0</rawshoottime><shoottime>0</shoottime><shorturl/><sloc>NDR0F8gbCAo3pFYmIIcrbgAAAAAAAAA!</sloc><tag/><uploadtime>2016-01-24 10:29:30</uploadtime><url>http://b110.photo.store.qq.com/psbe?/V10l2eOl01dgnV/FhSHGWUG2FNGCJERJqsUvB2QX359X35Twlgea5uXK.Rn4cdhY4nTI*1EvrFjw83m/b/dG4AAAAAAAAA&amp;bo=SAaAAgAAAAAFB.g!</url><width>1608</width><yurl>0</yurl></pic><t>696405303</t><topic><bitmap>10000010</bitmap><browser>0</browser><classid>100</classid><comment>1</comment><cover_id>NDR0F8gbCAo3pFYmIIcrbgAAAAAAAAA!</cover_id><createtime>1453602554</createtime><desc/><handset>0</handset><id>V10l2eOl01dgnV</id><lastuploadtime>1453602571</lastuploadtime><modifytime>1453602867</modifytime><name>我的秘密</name><ownerName>136038423</ownerName><ownerUin>136038423</ownerUin><pre>http://b110.photo.store.qq.com/psbe?/V10l2eOl01dgnV/lpX9Kd98uAOCcAkVV2zSlq0U.rS9mjlHDW70x2l67PlBtCgRaLHR9J.wCbKy8*Nu/a/dG4AAAAAAAAA</pre><priv>5</priv><pypriv>3</pypriv><total>1</total><url>http://b110.photo.store.qq.com/psbe?/V10l2eOl01dgnV/lpX9Kd98uAOCcAkVV2zSlq0U.rS9mjlHDW70x2l67PlBtCgRaLHR9J.wCbKy8*Nu/b/dG4AAAAAAAAA</url><viewtype>0</viewtype></topic><totalInAlbum>1</totalInAlbum><totalInPage>1</totalInPage></album></data></result>";
            String json = xmlToJSON(xml);
            System.out.println("json="+json);
            xml = jsonToXML(json);
            System.out.println("xml = "+xml);
        }
    
    }
    
    展开全文
  • Xml和Json互转工具类

    热门讨论 2020-07-30 23:33:23
    本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。
  • XML文件详解以及解析

    万次阅读 多人点赞 2017-06-15 11:27:25
    一、xml基础详解: 1、概述:  xml:即可扩展标记语言,xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。...
  • 什么是XML文件

    万次阅读 2018-07-09 09:51:13
    什么是XMLXML是由万维网联盟(W3C)创建的标记语言,用于定义编码人类和机器可以读取的文档的语法。它通过使用定义文档结构的标签以及如何存储和传输文档来实现这一点。将它与您可能熟悉的另一种标记语言(用于...
  • 使用Notepad++的XML Tools插件格式化XML文件

    万次阅读 热门讨论 2015-09-24 16:17:40
    1. 安装XML Tools插件 (1) 通过网址http://sourceforge.net/projects/npp-plugins/files/XML%20Tools/下载XML Tools,本人下载的是Xml Tools 2.4.8 Unicode.zip (2) 解压Xml Tools 2.4.8 Unicode.zip,关闭Notepad++...
  • web.xml的加载过程配置详解

    万次阅读 多人点赞 2020-09-21 11:28:16
    一:web.xml加载过程  简单说一下,web.xml的加载过程。当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动...
  • vue中显示格式化的xml

    万次阅读 2019-06-24 10:51:50
    用到了vkbeautify模块 import vkbeautify from ‘vkbeautify’ vkbeautify.xml(‘xxxxxxxxx’) {{xxxxxxxxx}}
  • perl解析XML的性能比较

    万次阅读 2015-11-27 13:20:27
    perl XML模块 perl解析XML实现方式有很多模块。下面总结一些。 模块 说明 XML::Simple 用于读写 XML 的普通 API,最好与 XML 格式的配置文件一起使用 XML::LibXML gnome libxml2 库的 ...
  • The XML response contains invalid XML Malformed XML: no element found clear了N次都不行。 原因:svn路径里面有“不可描述”的字符,我checkout的使用,用的是同事发来的地址,放到浏览器打开后,从浏览器...
  • IntelliJ IDEA中创建xml文件

    万次阅读 多人点赞 2018-09-17 13:47:18
    1、file—setting,左上角输入template...5、输入模板名字:Name:mybatis-cfg.xml (name可以自定义) 6、后缀名extension:xml 7、在面板中间输入内容: &amp;lt;?xml version=&quot;1.0&quot; enc...
  • XML注释快捷键

    万次阅读 多人点赞 2012-07-30 14:44:17
    eclipse中编辑java或C/C++文件时,注释的快捷键均为 "CTRL + / ",编辑xml文件时,该快捷键无效。 eclipse XML 注释:CTRL + SHIFT + / 撤销注释:CTRL + SHIFT + \ 傻傻的手动输入好几个月了,偶然google下...
  • 解决:xml文件单行注释、多行注释问题

    万次阅读 多人点赞 2019-09-18 16:10:03
    【解决:xml文件中的单释、多行注释问题】 第一种(单行): <!-- 注释内容 --> 第二种(多行): <!-- 注释内容(无其他注释符) ...
  • the xml response contains invalid xml

    万次阅读 2017-02-13 11:49:25
    故障如下 解决方法:  repo-browser 进入后重新checkout 更新方式选择第二项
  • Eclipse关闭XML文件验证的方法

    万次阅读 多人点赞 2012-11-18 15:47:55
    XML的编写是否符合规范,可以通过XML Schema或DTD进行验证,但有时候电脑本来就很卡,而且XML的某些错误并未导致程序无法运行的情况下,暂时关闭XML的验证也算不错的选择。 如web.xml中web-app标签没指定version: ...
1 2 3 4 5 ... 20
收藏数 3,085,759
精华内容 1,234,303
关键字:

xml