javaXML
来源:互联网 发布:还珠之我是知画 编辑:程序博客网 时间:2024/06/06 02:10
2017年7月6日学习总结:
XML是可扩展标记语言,独立于软件和硬件的信息传输工具。
1,简化数据共享
2,简化数据传输
3,简化平台的变更
元素从开始标签直到结束标签。
元素可包含其他元素、文本、属性。
大小写敏感
必须有根元素,不被其它元素包围。并且根元素只能有一个。
元素必须正确嵌套
CDATA段
[格式:<![CDATA[文本内容]]>
文本内容里的所有数据当中字符串处理
XML解析
SAXReader读取XML文档
使用SAXReader需要导入dom4j-full.jar包。
解析XML的过程
1,创建SAXReader读取XML文档,获得一个Document。
2,使用Document的Element getRootElement()
获取根元素。
3,使用Element的Element element(String name)
获取当前元素下的指定名字的子元素
或者使用List elements()
获取当前元素下的所有子元素
4,使用String getText()获取元素的文本信息
5,使用Attribute attribute(String name)
获取元素的指定名字的属性。
使用Attribute对象的String getValue()
获取属性的值
写XML
1,使用DocumentHelper的
static Document createDocument()获取Document对象
2,使用Document的Element addElement()添加根元素
3,使用Element的Element addElement()方法向元素中添加子元素。
4,使用Element的Element addAttribute(String name,String value)向元素中添加属性及值。
5,使用Element的Element addTest(String text)
向元素添加文本信息。
6,使用XMLWriter的 write方法将文档输出生成XML文档
一个写XML的案例
package day12;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* 要求用户控制台输入想输入的员工人数(至少5个),然后依序输入员工信息,每行为
* 一条员工信息,格式如:1,张三,25,男,5000,2006-3-18
* 每当输入一个员工后,要检查新输入的员工的id是否已经存在,即:不能在本次输入的
* 这些员工信息中出现相同id的员工。
* 然后按照emp.xml的格式,将这些员工写入到myemp.xml文档中。
* @author Over Front
* 需要导入pom.xml->Dependencies->add->don4j-dom4j->dom4j:1.6.1->CTRL+s保存一下
*/
public class Test02 {
public static void main(String[] args) throws ParseException {
Collection<Emp> c = getEmp(5);
writeDoc(c,"myemp.xml");
}
/**
* 将员工集合的内容按照emp.xml写到指定路径的文档中
* @param name
*/
public static void writeDoc(Collection<Emp> c,String name){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
XMLWriter writer = null;
try {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("list");
for(Emp e : c){
Element empEle = root.addElement("emp");
empEle.addElement("name").addText(e.getName());
empEle.addElement("age").addText(String.valueOf(e.getAge()));
empEle.addElement("gender").addText(e.getGender());
empEle.addElement("salary").addText(String.valueOf(e.getSalary()));
empEle.addElement("hirdate").addText(sdf.format(e.getHiredate()));
empEle.addAttribute("id", String.valueOf(e.getId()));
}
FileOutputStream fos = new FileOutputStream(name);
writer = new XMLWriter(fos,OutputFormat.createPrettyPrint());
writer.write(document);
System.out.println("写出完毕!");
} catch (Exception e) {
e.printStackTrace();
}finally{
if(writer!=null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 获取员工信息的方法
* @return 返回生成的员工集合
* 1,张三,25,男,5000,2006-3-18
* @throws ParseException
*/
public static Collection<Emp> getEmp(int num) throws ParseException{
Map<Integer,Emp> map =new LinkedHashMap<Integer,Emp>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Scanner scanner = new Scanner(System.in);
for(int i=1;i<=num;i++){
System.out.println("请输入第"+i+"个员工信息");
String input = scanner.nextLine();
String[] info = input.split(",");
int id = Integer.parseInt(info[0]);
if(map.containsKey(id)){
System.out.println("该员工已存在,请重新输入:");
i--;
continue;
}
String name = info[1];
int age = Integer.parseInt(info[2]);
String gender = info[3];
int salary = Integer.parseInt(info[4]);
Date hiredate = sdf.parse(info[5]);
Emp emp = new Emp(id,name,age,gender,salary,hiredate);
map.put(id, emp);
}
return map.values();
}
}
控制台输入员工信息
XML文档
<?xml version="1.0" encoding="UTF-8"?>
<list>
<emp id="1">
<name>张三</name>
<age>25</age>
<gender>男</gender>
<salary>5000</salary>
<hirdate>2006-03-18</hirdate>
</emp>
<emp id="2">
<name>李四</name>
<age>26</age>
<gender>男</gender>
<salary>6000</salary>
<hirdate>2007-03-18</hirdate>
</emp>
<emp id="3">
<name>王五</name>
<age>27</age>
<gender>男</gender>
<salary>7000</salary>
<hirdate>2008-03-18</hirdate>
</emp>
<emp id="4">
<name>赵六</name>
<age>28</age>
<gender>男</gender>
<salary>8000</salary>
<hirdate>2009-03-18</hirdate>
</emp>
<emp id="5">
<name>钱七</name>
<age>29</age>
<gender>男</gender>
<salary>9000</salary>
<hirdate>2010-03-18</hirdate>
</emp>
</list>
- javaXml
- javaxml
- javaxml
- javaXML
- javaXML方式传输图片
- javaXML方式传输图片 .
- javaXML方式传输图片
- 常用的JavaXML解析技术
- java面向对象下:JavaXML解析技术
- 简单javaXML读取——DOM、SAX
- javaXML文件解析(一) SAX解析
- javaXML文件解析(二)pull解析
- javaXML文件解析(三)DOM解析
- javaXML解析的俩种方法-----DOM-----SAX
- C++图的操作
- 一个Linux下c语言线程池的实现
- 如何在 SpringMVC Controller 上使用 Spring Data 的 Projection/投影?
- 如何在Github Pages搭建自己写的页面?
- tiny4412学习(四)之移植linux-设备树(2)设备树之LED点灯
- javaXML
- 1010. Radix (25)
- 电商平台的搭建(SpringMVC+SpringSecurity/Validation+Redis+MySQL+React)----购物车功能
- POJ 2919 Traveling Queen Problem 笔记
- error: command 'mt.exe' failed with exit status 31
- 编程题--移动字符串移动
- 绝对路径和相对路径
- java中static修饰符详解
- java的方法、重构,调试、异常处理机制总结