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. 当启动tomcat时出现tomcat setting should be set in tomcat preference page

    转自:https://blog.csdn.net/withyou_wy/article/details/53081800 出现此状况证明你的tomcat在配置的时候没有配置成功,通过以下两个步骤即可以 ...

  2. JAVA基础知识总结:十二

    一.String类 字符串是一种特殊的对象,一旦被初始化就不能被改变了 字符串常量存储于常量池中 二.StringBuffer类 是一个字符串缓冲区,相当于一个容器 特点 a.可以对字符串进行增加和删 ...

  3. 《UnityShader入门精要》学习笔记之渲染流水线

    第一种分类方式: 图形管道(如下7步): 顶点数据 : 由3D模型传递的三角形网格 顶点着色 : 编写CG程序对各个顶点进行着色 生成几何图元 : 连接特定的顶点生成几何图元,例如连接三个顶点生成一个 ...

  4. (转)C# 构造函数与析构函数

    (1)构造函数<1>除非是static,否则编译器将会给每一个没有构造函数的类指定一个默认的构造函数<2>构造函数private时候,类不能被实例化<3>派生类可以 ...

  5. python float转为decimal

    73.2413793103 ======= 73.2414 <type 'float'> ======= <class 'decimal.Decimal'> 当断言这两个值相等 ...

  6. linux重启后进入了救援模式,无法远程登录

    卸载删除了某个文件系统分区的逻辑卷,但是没有修改fstab文件,导致系统重启异常,此时已经无法远程连接了,只能本地登录到救援模式修改

  7. 51Nod 1810 连续区间

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1810 题目给出一个1~n的排列,问有多少连续区间.连续区间的定义为区间 ...

  8. Create a Hadoop Build and Development Environment

    Create a Hadoop Build and Development Environment http://vichargrave.com/create-a-hadoop-build-and-d ...

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

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

  10. 迭代FFT

    int reverse(int x, int len){ ; ; i < len; i <<= ){ t <<= ; ; } return t; } Complex A[ ...