SE02 Unit07 XML语法 、 XML解析
来源:互联网 发布:python bytes函数 编辑:程序博客网 时间:2024/06/09 17:49
emplist.xml
<?xml version="1.0" encoding="UTF-8"?><list> <emp id="1"> <name>张三</name> <age>34</age> <gender>男</gender> <salary>3000</salary> </emp> <emp id="2"> <name>李四</name> <age>21</age> <gender>女</gender> <salary>4000</salary> </emp> <emp id="3"> <name>王五</name> <age>46</age> <gender>女</gender> <salary>6500</salary> </emp> <emp id="4"> <name>赵六</name> <age>28</age> <gender>男</gender> <salary>4400</salary> </emp> <emp id="5"> <name>钱七</name> <age>53</age> <gender>男</gender> <salary>12000</salary> </emp></list>
myemp.xml
<?xml version="1.0" encoding="UTF-8"?><list> <emp id="1"> <name>张三</name> <age>22</age> <gender>男</gender> <salary>5000</salary> </emp> <emp id="2"> <name>李四</name> <age>23</age> <gender>女</gender> <salary>6000</salary> </emp> <emp id="3"> <name>王五</name> <age>24</age> <gender>男</gender> <salary>7000</salary> </emp> <emp id="4"> <name>赵六</name> <age>25</age> <gender>女</gender> <salary>8000</salary> </emp> <emp id="5"> <name>钱七</name> <age>26</age> <gender>男</gender> <salary>9000</salary> </emp></list>
用当前类的实例保存xml文档中的一个员工信息 (这个是用构造方法生成的)
package day12;/** * 用当前类的实例保存xml文档中的一个员工信息 * @author adminitartor * */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 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 String toString(){ return id + "," + name + "," + age + "," + gender + "," + salary; }}
使用DOM4J解析XML文档
package day12;import java.io.FileInputStream;import java.util.ArrayList;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;/** * 使用DOM4J解析XML文档 * * 将emplist.xml文档中的所有员工信息解析出来 * 并存入到一个List集合保存 * @author adminitartor * */public class ParseXmlDemo { public static void main(String[] args) { /* * 使用DOM4J解析XML的大致流程 * 1:创建SAXReader * 2:使用SAXReader读取XML文档,并返回 * 一个Document对象。 * 这一步就是DOM解析XML耗时耗资源的地方 * 因为这一步就会将XML文档中所有内容解析 * 出来并以一个Document对象保存。由于对象 * 存于内存,所以文档内容大的话会相应消耗 * 资源。 * 3:从Document中获取根元素 * 4:根据XML文档结构从根元素中逐级获取子元 * 素,最终达到遍历XML文档数据的目的。 */ try { //1 SAXReader reader = new SAXReader(); //2读取xml文档并返回Document对象// reader.read(new File("emplist.xml")); Document doc = reader.read( new FileInputStream("emplist.xml") ); System.out.println("读取xml文档完毕!"); /* * 3 获取根元素 * Element的每一个实例用于表示XML文档 * 中的一个元素(一对标签) * * Element用于获取当前标签信息的相关方法: * * String getName() * 获取当前标签的名字 * * String getText() * 获取当前标签中间的文本信息 * * List elements() * 获取当前标签下的所有子标签 * * List elements(String name) * 获取当前标签下所有同名子标签 * * Element element(String name) * 获取当前标签下指定名字的子标签 * * String elementText(String name) * 获取当前标签下指定名字的子标签中间的 * 文本。 * ele.elementText(name) * 相当于调用了: * ele.element(name).getText() * * Attribute attribute(String name) * 获取当前标签下指定名字的属性 * */ Element root = doc.getRootElement(); /* * 该集合用于保存从xml文档中解析出来的 * 所有员工信息 */ List<Emp> empList = new ArrayList<Emp>(); //获取根标签<list>下面的所有子标签<emp> List<Element> list = root.elements(); /* * 遍历每一个员工标签<emp>,并将信息保存 * 到一个Emp对象上,然后存入empList集合 */ for(Element empEle : list){ //获取name Element nameEle = empEle.element("name"); String name = nameEle.getText();// System.out.println(name); //获取age int age = Integer.parseInt( empEle.elementText("age") ); //gender String gender = empEle.elementText("gender"); //salary int salary = Integer.parseInt( empEle.elementText("salary") ); /* * Attribute的每一个实例用于表示某个标签 * 中的一个属性。 * 常用方法: * String getName() * 获取属性名 * * String getValue() * 获取属性值 */ Attribute attri = empEle.attribute("id"); int id = Integer.parseInt( attri.getValue() ); Emp emp = new Emp(id, name, age, gender, salary); empList.add(emp); } System.out.println("解析完毕!"); for(Emp emp : empList){ System.out.println(emp); } } catch (Exception e) { e.printStackTrace(); } }}
使用DOM4J生成XML文档
package day12;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;/** * 使用DOM4J生成XML文档 * @author adminitartor * */public class WriteXmlDemo { public static void main(String[] args) { /* * 生成XML文档的大致步骤: * 1:创建一个Document对象表示一个空白 * 文档 * 2:向Document中添加根元素 * 3:按照想生成的xml文档的结构顺序逐级的 * 向根元素中添加子元素以及对应的信息 * 4:创建XmlWriter对象 * 5:将Document对象写出以形成xml文档 * 6:关闭XmlWriter */ try { List<Emp> empList = new ArrayList<Emp>(); empList.add(new Emp(1,"张三",22,"男",5000)); empList.add(new Emp(2,"李四",23,"女",6000)); empList.add(new Emp(3,"王五",24,"男",7000)); empList.add(new Emp(4,"赵六",25,"女",8000)); empList.add(new Emp(5,"钱七",26,"男",9000)); //1 创建一个空白文档 Document doc = DocumentHelper.createDocument(); /* * 2 向文档中添加根元素 * Element addElement(String name) * 添加给定名字的根元素,并将该元素以Element * 实例形式返回,以便于继续操作。 * * 注意,该方法只能调用一次,因为一个文档只能有 * 一个根元素 * */ Element root = doc.addElement("list"); /* * 3 添加子标签以形成xml文档结构 * 将集合中的每个员工信息作为一个<emp>标签 * 添加到根标签中 */ for(Emp emp : empList){ /* * Element提供了添加相应信息的方法: * * Element addElement(String name) * 向当前标签中添加给定名字的子标签并将其 * 返回。 */ Element empEle = root.addElement("emp"); //向<emp>标签中添加<name>标签 Element nameEle = empEle.addElement("name"); //向<name>标签中添加文本信息 nameEle.addText(emp.getName()); empEle.addElement("age").addText(emp.getAge()+""); empEle.addElement("gender").addText(emp.getGender()); empEle.addElement("salary").addText(emp.getSalary()+""); /* * 向<emp>标签中添加属性"id" */ empEle.addAttribute("id", emp.getId()+""); } //4 XMLWriter writer = new XMLWriter( new FileOutputStream("myemp.xml"), OutputFormat.createPrettyPrint() ); writer.write(doc); System.out.println("写出完毕!"); writer.close(); } catch (Exception e) { e.printStackTrace(); } }}
使用XPath检索XML数据
package day12;import java.io.File;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;/** * 使用XPath检索XML数据 * @author adminitartor * */public class XpathDemo { public static void main(String[] args) { try { SAXReader reader = new SAXReader(); Document doc = reader.read( new File("myemp.xml") ); String path = "/list/emp[gender='女' and age>24]/salary"; List<Element> list = doc.selectNodes(path); for(Element e : list){ System.out.println(e.getText()); } } catch (Exception e) { e.printStackTrace(); } }}
阅读全文
0 0
- SE02 Unit07 XML语法 、 XML解析
- Java.SE02.XML读写
- XML语法 XML解析
- XML语法 、 XML解析
- XML语法与解析
- XML的语法和解析
- php中xml语法解析总结
- GTK XML语法解析器开发
- XML 的组成语法及解析
- DOM对XML的语法解析器
- 【iOS开发】XML解析--GData语法
- XML语法以及书写规范,Jaxp Dom解析XML
- 第6天(就业班) xml入门、xml语法、xml解析、xml读取和封装
- XML语法
- XML语法
- XML 语法
- xml语法
- XML 语法
- 代码练习
- 给java初学者关于jdk jre eclipse tomcat jetty 的疑惑的说明
- sql查询优化
- C++基础入门知识
- Selenium自动化测试-入门
- SE02 Unit07 XML语法 、 XML解析
- Android在As中org.apache.http系列的包不能使用
- 进程间通信--命名管道
- Android LinearLayout使用演示
- java注解总结
- 深度学习在健康医疗领域的应用综述
- 使用AJAX动态生成table表格数据
- STS上使用spring data jpa对数据库单表进行增删改查(2)
- Altium Vault v3.0.11 1CD