XML1(Xpath有點暈,單獨搞一章)

来源:互联网 发布:东莞百度seo排名优化 编辑:程序博客网 时间:2024/05/21 11:26

xml小结:

1.XML是可扩展标记语言。

2.功能:

#1.数据共享,防止代码写死。修改源程序,把需要修改的东西放在一个文件里,    称为配置文件,程序尽量不要改动,改就改在配置文件内容,比如修改聊天室    的 端口。

#2.数据传输
3.开头的xml指令是给解析引擎看的,同时内容部分为了防止大量写实体引用,可读性会很差,
CDATA块里面是纯文本:格式为<![CDATA[.....里面是纯文本......]]>

4. maven项目是写程序要是用第三方里面的API,要导进来java的压缩包(jar包)

阿帕奇组织进行整理jar包jar包的繁琐的依赖关系

5.解析方式:
1.SAX:解析快,占用内存小,但是没法改变节点
2.DOM:解析慢,占用内存多,可以遍历和修改节点
   两者有点互补

6.xml文件与java集合中Emp实例的互转操作(重点),别忘导包需要dom4j.

@1XML转化Emp实例存入List集合
1.创建SAXReader,读取后返回Document对象
  (DOM消耗资源的体现,他将读取到的Document存于内存,对象描述XML文档容)
2.根据对象获取根元素,按照xml的结构从根获取子元素屬性的目的

 @2List集合写出XML文档的步骤:
1.创建一个Document对象表示一个空白的xml文档
2.向Document对象中添加根元素
3.按照生成的xml文档的格式逐级向根元素添加子元素形成xml文档格式
4.创建XmlWriter
5.通过XmlWriter将Document写出

**************************************************************************************************

自己写好的Emp实例,很简单
public class Emp {
private int id;
private String name;
private int age;
private String gender;
private int salary;
public Emp(){}
public Emp(int id, String name, int age, String gender, int salary) {
super();
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.salary = salary;
}
public String toString() {
return "Emp [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", salary=" + salary + "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}

*************************************************************************************************************************************************************************************

public class ParseXmlDemo {
public static void main(String[] args) {
try {
SAXReader reader=new SAXReader();
Document doc=reader.read(new FileInputStream("emplist.xml"));
Element root=doc.getRootElement();


List<Emp> empList=new ArrayList();
List<Element> elements=root.elements();

for(Element empEle:elements){
//获取名字
Element nameEle=empEle.element("name");
String name=nameEle.getText();
//获取年龄
int age=Integer .parseInt(empEle.elementTextTrim("age"));
//获取性别
String gender=empEle.elementText("gender");
//获取薪资
int  salary=Integer.parseInt(empEle.elementTextTrim("salary"));
//1.String getName();属性名
//2.String getValue();属性值
Attribute attr=empEle.attribute("id");
int id=Integer.parseInt(attr.getValue());
Emp emp=new Emp(id,name,age,gender,salary);
empList.add(emp);
}
System.out.println("解析完毕!");
System.out.println("共"+empList.size()+"个员工");
for(Emp emp:empList){
System.out.println(emp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
**************************************************************************************
// 使用DOM生成xml文档
public class WriteXmlDemo {
public static void main(String[] args) {
List<Emp> empList=new ArrayList<Emp>();
empList.add(new Emp(1,"张三",23,"男",3000));
empList.add(new Emp(1,"张三",23,"男",3000));
empList.add(new Emp(1,"张三",23,"男",3000));
empList.add(new Emp(1,"张三",23,"男",3000));
empList.add(new Emp(1,"张三",23,"男",3000));
XMLWriter writer=null;
try {
Document document=DocumentHelper.createDocument();
Element root=document.addElement("list");
for(Emp emp:empList){
Element empEle=root.addElement("emp");
//添加子标签name
Element nameEle=empEle.addElement("name");
nameEle.addText(emp.getName());
//添加age
empEle.addElement("age").addText(emp.getAge()+"");
//添加性别
empEle.addElement("gender").addText(emp.getGender());
//添加工资
empEle.addElement("salary").addText(emp.getSalary()+"");
//添加属性
empEle.addAttribute("id",emp.getId()+"");
}
FileOutputStream fos=new FileOutputStream("myemp.xml");
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();
}
}
}
}
}