XML相关操作
来源:互联网 发布:死而后已 不亦远乎 编辑:程序博客网 时间:2024/06/04 04:50
有一个Emp类,用于描述员工
代码如下:
/** * 该类用于描述emp.xml文件中的员工 */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;}}代码一:
/** * 使用DOM解析XML文件 */public class XMLDemo1 {public static void main(String[] args) {/** * 解析XML文件的基本流程 * 1.创建SAXReader用来读取XML文件 * 2.指定xml文件使得SAXReader读取,并解析成文档对象Document * 3.获取更元素 * 4.获取每一个元素,从而达到解析的目的 *//** * 常用的读取方法 * Docment read(InputStream in) 字节流 * Docment read(Reader read) 字符流 * Docment read(File file) 文件对象 */SAXReader reader = new SAXReader();File fileXml = new File("emp.xml"); try {Document doc = reader.read(fileXml);Element root = doc.getRootElement();/** * Element element(String name) * 获取当前标签下第一个名为给定名字的标签 * * List elements(String name) * 获取当前标签下所有给定名字的标签 * * List eleemnts() * 获取当前标签下所有的子标签 * * String elementText(Stirng name) * 获取当前标签中名为给定名字的子标签中间的文本 * * Attribute attribute(String name) * 获取当前标签中指定名字的属性 * * String getName() * 获取属性的名字 * * String getValue * 获取属性的值 * */List<Emp> list = new ArrayList<Emp>();List<Element> listXml = root.elements("emp");for(Element emp : listXml){Attribute att = emp.attribute("id");int id = Integer.parseInt(att.getValue());String name = emp.elementText("name");int age = Integer.parseInt(emp.elementText("age"));String gender = emp.elementText("gender");int salary = Integer.parseInt(emp.elementText("salary"));list.add(new Emp(id,name,age,gender,salary));}System.out.println("解析了"+list.size()+"个员工信息");//输出每个员工的信息for(Emp e : list){System.out.println(e);}} catch (DocumentException e) {e.printStackTrace();}}}测试结果如下:
解析了5个员工信息1,张三,34,男,30002,李四,21,女,40003,王五,46,女,65004,赵六,28,男,44005,钱七,53,男,12000*************************************************************************************************************************************
代码二:
/** * 使用DOM写出一个XML */public class XMLDemo2 {public static void main(String[] args) {List<Emp> list = new ArrayList<Emp>();list.add(new Emp(1,"jack",33,"男",5000));list.add(new Emp(2,"boss",55,"男",5500));list.add(new Emp(3,"marry",22,"女",3500));list.add(new Emp(4,"kate",25,"女",6000));list.add(new Emp(5,"tom",31,"男",8500));/** * 生成一个XML文件的基本步骤 * 1.创建文档对象Document * 2.为Document添加根节点 * 3.为根节点组建树状结构 * 4.创建XMLWriter * 5.为XMLWriter指定写出目标 * 6.写出xml */Document doc = DocumentHelper.createDocument();/** * Document的方法 * Element addElement(String name) * 该方法用于向文档中添加给定名字的根元素,返回的Element实例就表示该根元素 * 需要注意的是,该方法只能调用一次,调用第二次会抛出异常 * * Element addElement(String name) * 向当前标签中添加给定名字的子标签 */Element root = doc.addElement("list");//循环添加每一个员工信息for(Emp e : list){Element emp = root.addElement("emp");/** * Element addAttribute(String name,String value) * 为当前标签添加给定名字以及对应值的属性,返回值任然为当前标签 * 这样做的目的是可以连续添加若干属性 */emp.addAttribute("id", String.valueOf(e.getId()));Element name = emp.addElement("name");name.setText(e.getName());//addText()方法是在原有字符串后追加emp.addElement("age").setText(String.valueOf(e.getAge()));emp.addElement("gender").addText(e.getGender());emp.addElement("salary").addText(String.valueOf(e.getSalary()));}/** * 当退出循环后,那么Document中的结构就已经建完了,需要将其写出为xml */XMLWriter writer = null;FileOutputStream out = null;try {writer = new XMLWriter(new FileOutputStream("myemp.xml"),OutputFormat.createPrettyPrint());/** * 将Document对象写出到文件中、这时会将Document转换为xml格式写入文件 */writer.write(doc);} catch (Exception e1) {e1.printStackTrace();} finally {if(writer != null){try {writer.close();} catch (IOException e1) {e1.printStackTrace();}}}}}测试结果如下:
<?xml version="1.0" encoding="UTF-8"?><list> <emp id="1"> <name>jack</name> <age>33</age> <gender>男</gender> <salary>5000</salary> </emp> <emp id="2"> <name>boss</name> <age>55</age> <gender>男</gender> <salary>5500</salary> </emp> <emp id="3"> <name>marry</name> <age>22</age> <gender>女</gender> <salary>3500</salary> </emp> <emp id="4"> <name>kate</name> <age>25</age> <gender>女</gender> <salary>6000</salary> </emp> <emp id="5"> <name>tom</name> <age>31</age> <gender>男</gender> <salary>8500</salary> </emp></list>
**************************************************************************************************************
代码三:/** * DOM4J对XPatch的支持 */public class XMLDemo3 {public static void main(String[] args) {SAXReader reader = new SAXReader();try {Document doc = reader.read(new File("myemp.xml")) ;/** * List selectNodes(String xpath) * 根据给定的xpath查询对应的节点 *///String path = "/list/emp[salary>5000]";//工资大于5000的人//String path = "/list/emp[gender='女']/salary[.>4000]";//工资大于4000的女同志的工资String path = "/list/emp[gender='女' and age>20]/salary";//女同志中年龄大于24岁的工资List list = doc.selectNodes(path);//List不用添加泛型,因为xpath除了获取标签之外还有属性,根据获取的内容强转即可for(Object o : list){Element e = (Element) o;System.out.println(e.getText());}} catch (DocumentException e) {e.printStackTrace();}}}
0 0
- xml相关操作
- XML相关操作
- XML的相关操作
- XML相关操作
- XML操作相关工具
- XML相关操作
- VC操作XML相关知识
- C#操作Xml的相关方法
- .net XML 创建、编辑、以及相关操作
- XML与数据集相关的操作
- C#TreeView控件与XML相关操作
- unity读写XML的相关操作
- SqlServer XML数据类型DML相关操作(图文结合)
- c#环境XML文件创建、修改、删除、查找相关操作
- xml相关
- xml相关
- Xml相关
- XML相关
- Android开发的内存问题
- poj1039 计算几何-交点,叉积
- Effective C++ - Accustoming Yourself to C++
- 开始学wxpython啦~~~~~
- Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信
- XML相关操作
- OpenStack计费组件 - Cloudkitty介绍
- PPT中插入Flash
- java中的运算符
- 压缩和解压缩
- Multiples of 3 and 5
- Ubuntu 开机进入命令行
- 2015年蓝桥杯省赛B组第3题--三羊献瑞 (暴力和深搜)
- http://www.cnblogs.com/majiangjiang/p/5528198.html