微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML1Xpath有點暈,單獨搞一章

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,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(); } } } } }

原文地址:https://www.jb51.cc/xml/293831.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。