XML的生成与解析
来源:互联网 发布:上海行知教育怎么样 编辑:程序博客网 时间:2024/06/04 20:10
准备工作
1、员工工具类
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 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;}@Overridepublic String toString() {return id+", "+name+", "+age+", "+gender+", "+salary;}}2、需要导入的包
dom4j 支持xml的生成和解析
jaxen 支持在Document解析中使用xpath
生成xml文档步骤
1.创建Document对象,表示xml文档
2.向Document对象中添加元素
3.按照预定的格式向根元素中添加子元素最终形成既定格式
4.创建XmlWriter
5.通过XMLWriter写出Document
//使用DOM生成xml文档public static void writeXML() throws IOException{List<Emp> empList = new ArrayList<Emp>();empList.add(new Emp(1, "张三", 25, "男", 4000));empList.add(new Emp(2, "李四", 26, "女", 5000));empList.add(new Emp(3, "王五", 27, "男", 6000));empList.add(new Emp(4, "赵六", 28, "女", 7000));empList.add(new Emp(5, "钱七", 29, "男", 8000));//第一步Document doc = DocumentHelper.createDocument();/* * 第二步 * Doucument提供了添加根元素的方法: * Element addElement(String name) * 向指定文档中添加指定名字的根元素,并以Element的实例形式将其返回,以便继续向根元素中做其他操作 * 需要注意的是,该方法只能调用一次。因为一个xml文档只能有一个根元素 */Element root = doc.addElement("list");//第三步for(Emp emp : empList){/* * 将每一个emp实例表示的员工信息以一个<emp>标签形式存入xml文档 * * Element提供了方法: * Element addElement(String name) * 向当前标签中添加给定名字的子标签,并以Element实例表示和返回 */Element empEle = root.addElement("emp");//添加nameElement nameEle = empEle.addElement("name");/* * Element提供了方法: * Element addText(String text) * 向当前标签中添加指定的文本信息 */nameEle.addText(emp.getName());//添加ageElement ageEle = empEle.addElement("age");ageEle.addText(emp.getAge()+"");//添加genderElement genderEle = empEle.addElement("gender");genderEle.addText(emp.getGender());//添加工资Element salaryEle = empEle.addElement("salary");salaryEle.addText(emp.getSalary()+"");/* * Element提供了添加属性的方法: * Element addAttribute(String name, String value) */empEle.addAttribute("id", emp.getId()+"");}//第四步XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());writer.setOutputStream(new FileOutputStream("myemp.xml"));//第五步writer.write(doc);System.out.println("写出完毕!");writer.close();}
使用dom解析xml文档步骤
1.创建SAXReader2.使用SAXReader读取并解析xml文档解析后会返回一个Document的对象,该对象即表示解析的xml文档内容(这一步就是dom耗时耗资的地方了,因为会将xml文档全部读取完并载入内存)
3.通过Document获取根元素
4.根据文档结构从根元素开始逐级获取子元素,已达到遍历xml文档内容的目的
//使用dom解析xml文档public static void parseXML() throws FileNotFoundException, DocumentException{//第一步SAXReader reader = new SAXReader();//第二步Document doc = reader.read(new FileInputStream("myemp.xml"));/* * 第三步 获取根元素 * Document提供了获取根元素的方法: * Element getRootElement() * * Element * 每一个Element实例都表示xml文档中的一个元素,即: * 一对标签通过Element实例,可以获取该实例表示的标签中的相关信息 * 例如该标签的名字标签的属性,以及该标签包含的所有子标签 */Element root = doc.getRootElement();/* * String getName() 获得标签名 */System.out.println("根标签名为:"+root.getName());/* * 第四步 * 解析xml文档内容,获取其中保存的所有员工信息 * 每个员工解析后可以使用Emp的一个实例保存 *///该集合用来保存解析出来的所有员工信息List<Emp> empList = new ArrayList<Emp>();/** * Element提供了获取子标签的相关方法。常用的有: * * Element element(String name)获取当前标签下指定名字的子标签(在子标签名字没有重复的时候常用) * * List elements()获取当前表标签下所有子标签,返回的集合中是若干的Element实例,每一个实例表示其中一个子标签 * * List elements(String name)获取当前标签下指定名字的所有子标签(在子标签名字有重复的时候使用) * * String getText()获取当前标签中的文本 * * String getTextTrim()在获取了标签中的文本之后,还会去除该字符串两端的空白 *///获取跟标签中的所有子标签List<Element> list = root.elements();//遍历所有子标签,每一个就是一个emp标签for(Element each : list){//获取name的值Element nameEle = each.element("name"); //获取<name>标签String name = nameEle.getText(); //获取标签中的文本//获取age值int age = Integer.parseInt(each.elementText("age"));//获取genderString gender = each.elementText("gender");//获取salaryint salary = Integer.parseInt(each.elementText("salary"));/* * Attribute attribute(int index) * Attribute attribute(String name) * 获取当前标签中的属性 * * Attribute的每一个实例用于表示标签的一个属性 */Attribute attr = each.attribute("id");int id = Integer.parseInt(attr.getValue());System.out.print(id+"\t"+name+"\t"+gender+"\t"+age+"\t"+salary);System.out.println();Emp emp = new Emp(id, name, age, gender, salary);empList.add(emp);}System.out.println("解析完毕!");System.out.println("得到了"+empList.size()+"个员工信息");for(Emp emp1 : empList){System.out.println(emp1);}}
使用xpath检索数据
//使用xpath检索xml数据public static void useXpath(){try {SAXReader reader = new SAXReader();Document doc = reader.read(new FileInputStream("myemp.xml"));String xpath = "/list/emp[name ='王五']/gender";List<Element> list = doc.selectNodes(xpath);for(Element e : list){System.out.println(e.getText());}} catch (Exception e) {e.getStackTrace();}}
0 0
- XML的解析与生成
- xml的生成与解析
- XML的解析与生成
- XML的解析与生成
- XML的生成与解析
- XML的解析与生成
- xml解析与xml的生成
- XML生成与解析
- xml 生成与解析
- android xml文件的生成与解析
- 7.XML的解析与生成
- xml解析生成与解析
- Android中的XML解析与生成——Pull解析xml、实现xml文件的生成
- C#XML生成与解析
- android xml解析与生成
- jaxb xml生成与解析
- Python 生成与解析 XML
- Java解析XML与生成XML文件
- windows下bat批处理实现守护进程(有日志)
- JavaScript语言基础7---函数的综合练习
- linux as4下安装oracle10g终结版
- 02 The TensorFlow Way(3)
- fopen后只能读到部分文件问题解决,文本方式vs二进制方式
- XML的生成与解析
- 开源软件expect软件安装
- Cocos2d-x:学习笔记(2017.05.12更新)
- 4-7 在一个数组中实现两个堆栈 (20分) PTA
- 下篇:Fusion of LiDAR 3D Points Cloud with 2D Digital Camera Image/3D点云与2D数字图像的融合
- java多线程 ---- 停止线程
- 奇偶位交换
- JSP自己写一个服务器
- 不完全图解HTTP