XML

XML介绍

1、什么是xml?

概念:XML(EXtensible Markup Language)XML 指可扩展标记语言(EXtensible Markup Language)

可扩展:我们可以自定义,完全按照自己的规则来!

标记: 计算机所能认识的信息符号!

01.很像html

02.着重点是数据的保存

03.无需预编译

04.符合W3C标准

2、XML 命名规则

l 名称可以含字母、数字以及其他的字符

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

l 名称不能以字符 “xml”(或者 XML、Xml)开始

l 名称不能包含空格

3、XML的组成部分:

01.文档声明  <?xml version="1.0" encoding="UTF-8"?>

02.元素    <p></p>

03.属性    <p  id="haha"></p>

04.注释   <!-- --> //  /***/

05.特殊字符

06.CDATA区域  Character data   字符数据

CDATA区域: XML解析器不会处理,而是当成字符串原样输出!

<![CDATA[xml内容]]>

07.处理指令   引入css样式

4、XML 与 HTML 的主要差异

l XML 不是 HTML 的替代。

l XML 和 HTML 为不同的目的而设计:

l XML 被设计为传输和存储数据,其焦点是数据的内容。

l HTML 被设计用来显示数据,其焦点是数据的外观。

l HTML 旨在显示信息,而 XML 旨在传输信息。

5、XML注意点:

l xml文件中只能有一个根节点

l 节点要成对出现  有开发和闭合

l 节点必须正确的嵌套

l 严格区分大小写

l 空格和换行都是特殊字符 会被解析器解析

6、特殊字符:

>   >

<   <

&   &

'   '

"   "

7、XML解析的四种方式

01.DOM:基于xml文档树结构的解析,把xml文件中的内容都读取到内存中,

比较占内存,消耗资源多!

02.SAX:基于事件的解析。消耗资源小!

03.JDOM:针对于java的特定模型!满足2 8原则!自身没有解析器,依赖于SAX2!

04.DOM4J:for(4)JDOM的一个分支!源码开放,性能优异,功能强大!

8、XMLDOM树

xml,html都是一个类似于倒挂的树!

只有一个根节点,枝叶茂盛!

我们把这个倒挂的树称之为===》dom树!

DOM:(Doucument Object Model)文档对象模型!

图示:

创建第一个maven项目:

步骤如下:

1.new  project===>maven==>quick==>archetypeCatalog=internal

2.引入需要的pom节点

3.自定义一个xml文件

4.需求通过dom4j实现查询学校下面的年级以及班级信息

5.创建一个测试类 书写代码

DTD(Document Type Definition(文档定义类型)

l 01.规范我们的编码

l 02.在浏览器中正常的显示

实例:

<!ELEMENT school (grade+),(class|student)>

ELEMENT :元素,关键字

school:元素名称

grade:子元素或者元素类型  CDATA  PCDATA (Parse)解析数据,不能包含子元素

字符的含义:

():用来给元素分组

| :两者必须选择一个

+ : 1-N,至少出现一次

* : 0-N,可有可无,并且可以多次

?: 0|1,最多一次

,:元素出现的顺序

DTD文档使用方式:

01.内部DTD

<!DOCTYPE 根元素[定义的内容]>

02.外部DTD

<!DOCTYPE 根元素 SYSTEM "dtd文件位置">

02.内外部DTD

<!DOCTYPE 根元素 SYSTEM "dtd文件位置"[定义的内容]>

XML课堂练习:(增 删 改 查)

步骤:

首先创建的是xml文件。(我的例子)

<?xml version="1.0" encoding="UTF-8"?>
<clothes
  <type name=" 衣服1"
    <clothes name="连衣裙" color="白色"/>  
    <clothes name="T恤" color="蓝色"/> 
  </type>  
  <type name=" 衣服2"
    <clothes name="牛仔裤" color="黑色"/>  
    <clothes name="夹克" color="粉色"/> 
  </type>  
  <type name=" 衣服3"
    <clothes name="外套" color="蓝色"/>  
    <clothes name="短裤" color="灰色"/> 
  </type>  
  <type name="衣服4">
    <clothes name="衬衫" color="白色"/>
    <clothes name="紧身裤" color="黑色"/>
  </type>
</clothes>

然后在测试类里边写相关的代码,来实现增删改查一系列操作

可以使用dom4j的相关架包信息 所以要在pom.xml文件里写上使用的dom4j信息,以便导dom4j的架包

<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
  <groupId>dom4j</groupId>
  <artifactId>dom4j</artifactId>
  <version>1.6.1</version>
</dependency>

初始的XML文件样式

要获取dom和根节点所以需要创建一个方法 ,以在查全部的时候调用 查询

   //获取dom 和根节点
public static void getDocument()
{
SAXReader reader =new SAXReader();//创建解析器
try {
document =reader.read("src/resources/clothes.xml");//读取xml文件
root=document.getRootElement();
} catch (DocumentException e) {
e.printStackTrace();
}
}

获取dom和根节点 查看全部

 //1.查看全部
private static void findAll() {
getDocument();
//根据根节点获取子节点
Iterator <Element> types= root.elementIterator();
while(types.hasNext()){
Element type =types.next();
System.out.println("衣服的名称"+type.attributeValue("name"));
//通过type获取clothes
Iterator<Element> clothes =type.elementIterator();
//遍历clothes
while(clothes.hasNext()){
Element cloth =clothes.next();
System.out.println("衣服的款式为"+cloth.attributeValue("name"));
System.out.println("衣服的颜色为"+cloth.attributeValue("color"));
}
}
}

查看全部

运行结果:

注意:

在写删 改 修的操作时 要考虑的是 ,我们不单单是对内存中修改,我们要的是需要在xml文件里修改 所以在完成这一系列的操作时我创建一个真正保存的方法

 //真实的保存数据(字符流)
public static void save(){
//创建输出流
XMLWriter writer=null;
//编码格式
OutputFormat format=null;
try {
format=OutputFormat.createPrettyPrint();//设置格式
writer =new XMLWriter(new FileWriter("src/resources/clothes.xml"),format);
writer.write(document);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

真正的在xml进行

  //3.新增
private static void add() {
Element type =root.addElement("type");
type.addAttribute("name","衣服4");
Element cloth = type.addElement("clothes");
cloth.addAttribute("name","衬衫");
cloth.addAttribute("color","白色");
Element cloth1 = type.addElement("clothes");
cloth1.addAttribute("name","紧身裤");
cloth1.addAttribute("color","黑色");
save();
System.out.println("新增成功");
}

增加

运行结果:

 删

  //2.删除
private static void delete() {
Iterator<Element> types =root.elementIterator();//拿到根节点下的所有的字节点
while(types.hasNext()){
Element type =types.next();
if (type.attributeValue("name").equals("衣服5")){
root.remove(type);
}
}
save();
System.out.println("删除成功");
}

删除

运行结果:

   //4.修改
private static void update() {
Iterator<Element> types =root.elementIterator();//拿到所有的子节点
System.out.println("请输入需要修改的衣服名称");
String Receive =input.next();
System.out.println("请输入修改后的衣服名称");
String Receive2 =input.next();
while(types.hasNext()){
Element type =types.next();
if(type.attributeValue("name").equals(Receive)){
type.setAttributeValue("name",Receive2);
}
}
save();
System.out.println("修改成功");
}
}

修改

运行结果:

 

XML(二)的更多相关文章

  1. Java SE之XML<二>XML DOM与SAX解析

    [文档整理系列] Java SE之XML<二>XML DOM与SAX解析 XML编程:CRUD(Create Read Update Delete) XML解析的两种常见方式: DOM(D ...

  2. JavaScript操作XML(二)

    上一篇介绍了XML的结构以及节点之间的关系这一篇介绍浏览器内建的XML解析器以及JavaScript是如何加载XML的. 大多数浏览器都有读取和操作 XML 的内建 XML 解析器. 解析器(XML ...

  3. Hibernate映射文件详解(News***.hbm.xml)二

    转自 http://blog.csdn.net/a9529lty/article/details/6454924 一.hibernate映射文件的作用: Hibernate映射文件是Hibernate ...

  4. 用javascript操作xml(二)JavaScript 将XML转换成字符串(xml to string)

    function xmlToString(xmlData) { var xmlString; //IE if (window.ActiveXObject){ xmlString = xmlData.x ...

  5. Xml二(解析思想)、

    XML解析: * 解析xml可以做: * 如果xml作为配置文件:读取 * 如果xml作为传输文件:写,读 * xml解析思想: * DOM:将文档加载进内存,形成一颗dom树(document对象) ...

  6. XML二

    XML的语法要求: 1,XML文档必须有一个顶层元素,即文档元素,所有其他元素必须嵌入在文档元素中. 2,元素嵌套要正确,即如果一个元素在另一个元素中开始,那么必须在同一个元素中结束. 3,每个元素必 ...

  7. Android之使用XMLPull解析xml(二)

    转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...

  8. XML介绍

    XML [TOC] 1.XML简介 XML是Extend Markup Langue可扩展标签语言,标签由开发着自己定义 作用是: 1.描述带关系的数据(作为软件的配置文件):包含与被包含的关系 2. ...

  9. XML增、删、改

    今天有个需求需要操作xml节点.突然见遗忘了许多.上网看了些资料.才整出来.脑袋真不够用.在这里把我找到的资料共享一下.方便以后使用.本文属于网摘/ 一.简单介绍 using System.Xml; ...

  10. JavaScript操作XML

    JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...

随机推荐

  1. Python3 操作Excel

    首先说明一下 在处理大文件时,openpyxl 的性能不如 xlrd,xlwt等.所以可以读取的时候使用xlrd,写的时候用openpyxl. 今天遇到一个使用场景:excel存放的是一条条用例,包含 ...

  2. CPU、OpenGL/DirectorX、显卡驱动和GPU之间的关系

  3. h5游戏引擎有哪些

    h5游戏引擎有哪些 一.总结 一句话总结: Layabox Egret Pixi.js Three.js PlayCanvas Cocos2d-js Hilo 1.H5游戏开发语言? Flash_AS ...

  4. (转)stm32硬件IIC

    cube与I2C:https://www.cnblogs.com/121792730applllo/p/5044920.html I2C官网:https://www.i2c-bus.org/stand ...

  5. Spring 拦截器实现+后台原理(MethodInterceptor)

    MethodInterceptor MethodInterceptor是AOP项目中的拦截器(注:不是动态代理拦截器),区别与HandlerInterceptor拦截目标时请求,它拦截的目标是方法. ...

  6. 20170923xlVBA_UpdateClientDetailSQL_Dictionary

    Sub UpdateClientDetailWGQ() Dim Wb As Workbook Dim Sht As Worksheet Dim Rng As Range Dim Arr As Vari ...

  7. Xmanager Power Suit 6.0.0009 最新版注册激活

    Xmanager Power Suit 6.0.0009 最新版注册激活 手工操作步骤Xmanger Power Suit 官方 其实有两种 .exe 文件,一个是用于试用的,在注册的时候不能直接输入 ...

  8. SQL 2016安装

    微软数据库SQL Server 2016正式版在2016年6月就发布,由于近期工作忙,一直拖到现在才有时间把安装过程写到博客上,分享给大家.本人一直习惯使用英文版,所以版本和截图都是英文版的.废话少说 ...

  9. 6月3 Smarty基础读取配置

    Smarty百科 Smarty是一个php模板引擎.更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同 ...

  10. vue3.0 配置公共请求地址

    正常请求接口: return request({ url: 'http://192.168.1.0/User/cancelUpgrade', method: 'get', params: data } ...