加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml

发布时间:2020-12-16 00:33:15 所属栏目:百科 来源:网络整理
导读:XML eXtensible Markup Language 可扩展标记语言 保存数据,用于数据的传递 JAVA中框架的配置文件 index =========================== 1、XML的语法(掌握) 2、DTD(Schema)(了解) 3、JAVA 解析XML(掌握) 1、XML的语法(掌握) a、xml 文件的第一行为声明 ?xml

XML
eXtensible Markup Language
可扩展标记语言
保存数据,用于数据的传递
JAVA中框架的配置文件

index
===========================
1、XML的语法(掌握)
2、DTD(Schema)(了解)
3、JAVA 解析XML(掌握)


1、XML的语法(掌握)
a、xml 文件的第一行为声明
<?xml version="" encoding=""?>
<?xml:声明当前文档为xml文档
version:版本号,1.0,1.1
encoding:编码
b、xml文件中总会有一对根元素
c、xml的标记必须有结尾
d、xml元素必须有正确的嵌套
e、实体
<:&lt;
>:&gt;
&:&amp;
f、CDATA区:存储带有特殊字符的文本数据
<![CDATA[
......
]]>
g、注释
h、xml标记名区分大小写,属性值必须使用""或'',
属性通常需要给属性赋值

满足xml文件语法的要求xml文件,称为格式良好的xml
文件

xml文档的解析器:浏览器,myeclipse,xml spy

课堂快速小练习:
编写一个xml文件,
存储书籍数据
书名,价格,ISBN,作者,出版社
定义三本书

编写一个存储职员信息的xml文件

2、DTD(Schema)(了解)
Document Type Definition
作用:限制xml文件的结构

编写DTD,可以在xml文件内部,也可以定义单独的
DTD文件

引入:DTD
a、引入一定范围内的DTD
<!DOCTYPE 根元素 SYSTEM URL>
b、引入一个公共的DTD
<!DOCTYPE 根元素 PUBLIC "名字" URL>

dtd,xml需求:
根元素:struts
struts子元素:package,global-results零个或多个
package元素中有三个属性,name,extends,namespace
global-results中有两个属性,name,type

package子元素:action,零个或多个
action中三个属性:name(必须有),class(必须有),method

action子元素:result,零个或多个
result中有两个属性:name(必须有),type
<!ELEMENT struts .....>
.........
<!ATTLIST..... >

3、JAVA 解析XML(掌握)
a、解析XML,获取数据
b、java中的数据写入到XML文件中

JAVA中提供两种解析方式
DOM 解析 xml中的dom java
SAX 解析
jdom/dom4j
=======================================
======代码的开始==========
==================================
demo01.xml
================
<?xml version="1.0" encoding="utf-8"?>
<students>
<student>
<name length="10">张三</name>
<age max="90">91</age>
<sex>男</sex>
<info va="聪明的纯爷们"/>
</student>
<student>
<name>李芳</name>
<age>20</age>
<sex>女</sex>
</student>
</students>
================================
demo02.xml
================
<?xml version="1.0" encoding="utf-8"?>
<书库>
<图书>
<书名>&lt;&lt;鹿鼎记&gt;&gt;</书名>
<价格>45</价格>
<ISBN>2012358</ISBN>
<作者>金庸</作者>
<出版社>达内</出版社>
</图书>
<图书>
<书名>
<![CDATA[
<<鹿鼎记>>
]]>
</书名>
<价格>45</价格>
<ISBN>2012358</ISBN>
<作者>金庸</作者>
<出版社>达内</出版社>
</图书>
<!--
<<xml文件中使用的注释
-->
</书库>
================================
demo03.dtd
================
<!--DTD定义-->
<!ELEMENT employees (emp*)>
<!ELEMENT emp (ename,job?,sal+)>
<!ELEMENT ename (#PCDATA)>
<!ELEMENT job (#PCDATA)>
<!ELEMENT sal (#PCDATA)>
<!--Attribute List-->
<!ATTLIST ename length CDATA #REQUIRED>
<!ATTLIST sal max CDATA #IMPLIED>
================================
demo03.xml
================
<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE employees [
<!--DTD定义-->
<!ELEMENT employees (emp*)>
<!ELEMENT emp (ename,sal+)>
<!ELEMENT ename (#PCDATA)>
<!ELEMENT job (#PCDATA)>
<!ELEMENT sal (#PCDATA)>
<!--Attribute List-->
<!ATTLIST ename length CDATA #REQUIRED>
<!ATTLIST sal max CDATA #IMPLIED>
]>

<employees>
<emp>
<ename length="8">Jack</ename>
<job>Salsman</job>
<sal>3000</sal>
</emp>
<emp>
<ename length="10">Mike</ename>
<job>Salsman</job>
<sal max="20000">3000</sal>
</emp>
</employees>
================================
demo04.xml
================
<?xml version="1.0" encoding="utf-8"?>
<!-- 引入一个外部DTD -->
<!DOCTYPE employees SYSTEM "demo03.dtd">
<employees>
<emp>
<ename length="8">Jack</ename>
<job>Salsman</job>
<sal>3000</sal>
</emp>
<emp>
<ename length="10">Mike</ename>
<job>Salsman</job>
<sal max="20000">3000</sal>
</emp>
</employees>
=========项目===================================================
Employee.java
===============
public class Employee {

private String ename;
private String job;
private double sal;
public Employee() {
}
public Employee(String ename,String job,double sal) {
this.ename = ename;
this.job = job;
this.sal = sal;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public double getSal() {
return sal;
}
public void setSal(double sal) {
this.sal = sal;
}
}
==================================
TestParseXml.java
==================
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class TestParseXml {

public static void main(String[] args) {
//获取被读取xml文件的输入流
InputStream is = TestParseXml
.class.getClassLoader()
.getResourceAsStream("xml/demo04.xml");
//System.out.println(is);
//获取一个解析器
SAXReader reader = new SAXReader();
reader.setValidation(true);
Document doc = null;
try {
//获取整个文档对象
doc = reader.read(is);
//System.out.println(doc);
} catch (DocumentException e) {
e.printStackTrace();}
//获取根元素
Element root = doc.getRootElement();
//System.out.println(root.getName());
//获取所有emp元素
List<Element> elements = root.elements("emp");
/*
//System.out.println(elements.size());
//获取第一个emp元素中的ename元素
Element ename = elements.get(0).element("ename");
//System.out.println(ename.getName());
//获取ename元素中的文本数据
System.out.println(ename.getText());
Employee emp = new Employee();
emp.setEname(ename.getText());
*/
List<Employee> emps = new ArrayList<Employee>();
for(Element ele:elements){
Employee emp = new Employee();
emp.setEname(ele.element("ename").getText());
emp.setJob(ele.element("job").getText());
emp.setSal(Double.parseDouble(ele.element("sal")
.getText()));
emps.add(emp);
}
System.out.println(emps.get(1).getSal());
System.out.println(emps.size());
}
public List<Employee> xmlToEmp(InputStream is){
return null;
}
}
===================================
TestWriteXml.java
===================
package com.tarena.xml.demo;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

/** * 通过dom4j写出一个XML文件 */ public class TestWriteXml { public static void main(String[] args) { Employee emp = new Employee("张三","软件工程师",8500); //创建文档对象 Document doc = DocumentHelper.createDocument(); //创建根元素 Element root = doc.addElement("employees"); //创建元素 Element empEle = DocumentHelper.createElement("emp"); Element enameEle = DocumentHelper.createElement("ename"); enameEle.setText(emp.getEname()); empEle.add(enameEle); root.add(empEle); OutputStream out = null; try { out = new FileOutputStream("employees.xml"); XMLWriter writer = new XMLWriter(out); writer.write(root); writer.flush(); writer.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } =========================================================

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读