XML相关知识点

XML顾名思义是扩展性标记语言,它具有规范性,现列出操作:

XML的相关格式:

1.<?xml version="1.0" encoding="utf-8" standalone="yes" ?>---standalone表示当前xml是否是一个独立的文档;

2.元素标签:  一个xml标签就是一个xml元素, xml文件必须要有一个根元素(包含所有元素的元素叫做根元素) 

3.命名规范:
 >区分大小写,例如,<P>和<p>是两个不同的标记。
 >不能以数字或标点符号或"_"开头。
 >不能以xml(或XML、或Xml 等)开头。
 >不能包含空格。
 >名称中间不能包含冒号(:)。属性:一个标签可以有多个属性,每个属性都有它自己的名称和取值,例如:
  <china capital="beijing"/>注释:Xml文件中的注释采用:“<!--注释-->” 格式。

4.xml引入dtd文件方式:(1) 外部引入: dtd是一个独立文件 ,这个文件的后缀为dtd,<!DOCTYPE 根元素名称 SYSTEM dtd文件位置> --SYSTEM 引用的是当前系统的dtd
  <!DOCTYPE 根元素名称 PUBLIC DTD文件的URL> --PUBLIC 引用的是网络公共位置上的dtd;(2) 内部引入:直接在xml文件中写 DTD
  <!DOCTYPE 根元素的名称[
   dtd的约束
  ]>
 DTD的约束可以定义在XML文件内部,如果DTD被定义在了XML内部则XML文档声明中standalone="yes"
DTD的约束也可以定义在一个独立的后缀为.dtd的文件中再由xml文件引入,此时引入此dtd的xml文档声明中standalone="no"DTD语法:(1)元素定义
  <!ELEMENT 元素名称 元素约束> 元素类型
 元素约束
  ANY/EMPTY
  子元素列表,将可以包含的子元素用小括号括起来
   用逗号分隔,表示内容的出现顺序必须与声明时一致。
    <!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>
    用|分隔,表示任选其一,即多个只能出现一个
    <!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>
  +: 一次或多次 (书+)
  ?: 0次或一次 (书?)
   *: 0次或多次  (书*)属性定义:语法格式:
  <!ATTLIST 元素名 
   属性名1 属性类型 属性约束
   属性名2 属性类型 属性约束
   ……
  >


  5.属性类型
   CDATA:表示属性值为普通文本字符串。
   ENUMERATED :枚举类型
   ID:在整个xml中id不可重复

6.属性约束
   #REQUIRED:必选
   #IMPLIED:可选
   #FIXED:固定值,属性的取值为固定的一个值
   默认值

解析方法:

1.获得解析Reader对象

SAXReader reader=new SAXReader();

2.读取对应的xml文件

Document doc=reader.read("domFile.xml");

3.获得读取文件的根节点

 Element element=doc.getRootElement();

4.获取根节点下的子节点

 Element bookE1=element.element("书").element("书名");

5.获得子节点的文本内容

String bookName=bookE1.getText();
     System.out.println(bookName);


添加节点功能的实现:

1.使用DocumentHelper创建一层层节点,在新生成的节点可设置属性

 Element newBook=DocumentHelper.createElement("书");
  Element new1=DocumentHelper.createElement("书名");
  new1.addAttribute("编号","a3");
  Element new2=DocumentHelper.createElement("作者");
  Element new3=DocumentHelper.createElement("售价");

2.上层节点加上下层节点

  newBook.add(new1);
  newBook.add(new2);
  newBook.add(new3);
  root.add(newBook);

3.写入到文件中

//将读取的文件放在文件输出流中

  OutputStream w=new FileOutputStream("domFile.xml");

//创建XMLWriter对象,这样能够让XML多行书写

 XMLWriter writer=new XMLWriter(w, OutputFormat.createPrettyPrint());

//写出文档

  writer.write(doc);

  writer.close();
  System.out.println("完成");


删除节点操作:

1.获取对应节点:

List list=root.elements("书");

Element secBook=(Element) list.get(1);

2.移除对应节点

  root.remove(secBook);

3.写入到文件中

  OutputStream w=new FileOutputStream("domFile.xml");

  XMLWriter writer=new XMLWriter(w);
  System.out.println("完成");




猜你喜欢

转载自blog.csdn.net/u012994320/article/details/70163164