XML文件的默认打开方式是浏览器
xml:是可扩展的标记语言 Extensible Markup Language。以一种标签语言与HTML类似1、xml的作用
- 编写配置文件:C3P0编写XML配置文件
- 做数据传输
- 必须是格式良好的XML文档
- 使用DTD和XSD(XML Schema)定义语义约束
- 声明信息,用于描述XML的版本和编码方式
- XML要有且仅有一个根元素。一个元素是一对标签,标签里面是内容
- XML是大小写敏感的
- XML是标签成对的,而且要正确嵌套
- 属性值要使用双引号。
- 注释的写法
【案例1】:描述一下学生的信息
二、DTD 1、DTD简介王彤 Java 89 李佳 sql 58
2、DTD作用DTD:文档类型定义 document Type Definition
- 约束XML文档格式,保证XML是一个有效的XML文档
DTD在使用的时候可以分为两种
- 内部DTD
- 外部DTD
假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
【元素声明语法】
【数量词】 限制元素出现的次数
属性声明使用下列语法:
【属性类型】:CDATA,表示字符数据(character data)
【默认值】:
- #REQUIRED:必须出现
- #IMPLIED:不是必须的
【格式良好的DTD约束的XML文档】
【案例1】:描述一下学生的信息使用DTD约束
]>3.2 外部DTD王彤 Java 89 李佳 sql 58 张三 html 88
创建一个独立的DTD文件
在XML文件中引入DTD文件
三、约束和验证XML 1、XSD王彤 Java 89 李佳 sql 58
- XSD
- XML Schema是DTD的替代者
- 不仅可以定义XML文档的结构, 还可以规范文档的内容
- XSD本身也是XML文档,
- XSD采用XML文档来定义语义约束,比DTD要复杂一-些,但是功能强大的多。
- 支持丰富的数据类型
- 允许开发者自定义数据类型
- 可读性强
- 可针对未来需求进行扩展
2.1常见的XML解析技术有哪些? 2.1.1 DOM解析对XML文件的 *** 作,包括创建XML,对XML文件的增删改查 *** 作
基于XML树结构,耗费资源。是官方提供的解析方式
2.1.2 SAX解析是民间的解析方式,SAX是基于事件的解析方式,消耗的资源少。数据量大的时候适用
2.1.3 JDOM解析以上两种都是原生的解析方式,代码量巨大
第三方提供的解析,开源,免费的解析方式,效率比DOM解析快
2.1.4 DOM4J接口**第三方提供的解析,开源,免费的解析方式,是JDOM的升级版
2.2 使用DOM4J解析XML解析XML入口是一个对象,是需要先拿到一个document对象
2.2.1读取XML文档中的信息- 导包:dom4j.jar
- 编写代码测试【如下】
public class Test { public static void main(String[] args) { //[1]创建SAX对象,用于读取XML文件 SAXReader reader = new SAXReader(); document doc = null; try { // [2]读取xml文件,找到document对象 doc = reader.read(new File("src"+File.separator+"com"+File.separator+"wei"+File.separator+"xml"+File.separator+"Student2.xml")); //[3]获取根元素 getRootElement Element root = doc.getRootElement(); //System.out.println("根元素:"+root.getName()); //[4 iterator]迭代器迭代更元素下的所有元素 Iterator2.2.2 使用dom4j生成XML文件it = root.elementIterator(); while (it.hasNext()) { Element element = (Element) it.next(); //System.out.println(element.getName()); //[5]取属性 Iterator attributes = element.attributeIterator(); 多个属性迭代继续 Attribute id = element.attribute("id"); //System.out.println(id.getName()+"="+id.getValue()); //[6]获取子元素 //[7]打印输出 System.out.println("id="+element.attribute("id").getName()+"-----"+"value="+element.attribute("id").getText()); System.out.println("name="+element.element("name").getName()+"-----"+"value="+element.element("name").getText()); System.out.println("score="+element.element("score").getName()+"-----"+"value="+element.element("score").getText()); System.out.println("course="+element.element("course").getName()+"-----"+"value="+element.element("course").getText()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
public class Test2 { public static void main(String[] args) { // [1] 通过documenthelper创建一个documnet对象 document doc = documentHelper.createdocument(); // [2] 写一个Xml文件,添加一个根元素,并得到根元素 Element root = doc.addElement("books"); // [3] 为根元素添加元素 Element book = root.addElement("book"); // [4] 为元素添加属性 方便链式编程 book.addAttribute("id", "b01"); // [5] 为book添加在元素 Element name = book.addElement("name"); Element author = book.addElement("author"); Element price = book.addElement("price"); // [6] 为子元素添加文本信息 name.addText("Thinking in java"); author.addText("efcod"); price.addText("88"); // [7] 将doc输出到XML文件中即可 Writer writer = null; Writer writerFormat = null; try { writer = new FileWriter(new File("src"+File.separator+"com"+File.separator+"wei"+File.separator+"dom4j"+File.separator+"book2.xml")); writerFormat = new FileWriter(new File("src"+File.separator+"com"+File.separator+"wei"+File.separator+"dom4j"+File.separator+"bookFormat.xml")); doc.write(writer); // [8] 格式良好的输出 OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer2 = new XMLWriter(writerFormat,format); writer2.write(doc); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { if (writer!=null) { writer.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (writerFormat!=null) { writerFormat.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)