• java操作xml文档


    DOM4j  和  XPATH

    • DOM 文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展置标语言的标准编程接口,通过DOM树来读取所有元素

                   1. Dom4j 遍历 XML

    import java.util.List;
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class HrReader {
        public void readXml(){
            String file = "d:/workspace/xml/src/hr.xml";
            //SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中。
            SAXReader reader = new SAXReader();
            try {
                Document document = reader.read(file);
                //获取XML文档的根节点,即hr标签
                Element root = document.getRootElement();
                //elements方法用于获取指定的标签集合
                List<Element> employees =  root.elements("employee");
                for(Element employee : employees){
                    //element方法用于获取唯一的子节点对象
                    Element name = employee.element("name");
                    String empName = name.getText();//getText()方法用于获取标签文本
                    System.out.println(empName);
                    System.out.println(employee.elementText("age"));
                    System.out.println(employee.elementText("salary"));
                    Element department = employee.element("department");
                    System.out.println(department.element("dname").getText());
                    System.out.println(department.element("address").getText());
                    Attribute att = employee.attribute("no");
                    System.out.println(att.getText());
                }
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            HrReader reader = new HrReader();
            reader.readXml();
        }
        
    }

                   2. Dom4j  更新 XML

    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class HrWriter {
        public void writeXml(){
            String file = "d:/workspace/xml/src/hr.xml";
            SAXReader reader = new SAXReader();
            try {
                Document document = reader.read(file);
                Element root = document.getRootElement();
                Element employee = root.addElement("employee");
                employee.addAttribute("no", "3311");
                Element name = employee.addElement("name");
                name.setText("李铁柱");
                employee.addElement("age").setText("37");
                employee.addElement("salary").setText("3600");
                Element department = employee.addElement("department");
                department.addElement("dname").setText("人事部");
                department.addElement("address").setText("XX大厦-B105");
                Writer writer = new OutputStreamWriter(new FileOutputStream(file) , "UTF-8");
                document.write(writer);
                writer.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            HrWriter hrWriter = new HrWriter();
            hrWriter.writeXml();
        }
    }

                  3.XPATH 路径表达式    XML中的查询语言

            

                   4.jaxen   java编写的开源XPATH库   jar包下载地址:https://maven.aliyun.com/mvn/search 搜索jaxen 即可    加入项目中

    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.SAXReader;
    
    public class XPathTestor {
        public void xpath(String xpathExp){
            String file = "E:/lianxi/xml/hr.xml";
            SAXReader reader = new SAXReader();
            try {
                Document document = reader.read(file);
                
                //用来执行XPATH表达式的,Node就是Element和attribute的父类
                List<Node> nodes = document.selectNodes(xpathExp);
                for(Node node : nodes){
                    Element emp = (Element)node;
                    System.out.println(emp.attributeValue("no"));
                    System.out.println(emp.elementText("name"));
                    System.out.println(emp.elementText("age"));
                    System.out.println(emp.elementText("salary"));
                    System.out.println("==============================");
                }
                
                
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            XPathTestor testor = new XPathTestor();
    //        testor.xpath("/hr/employee");
    //        testor.xpath("//employee");
    //        testor.xpath("//employee[salary<4000]");
    //        testor.xpath("//employee[name='李铁柱']");
    //        testor.xpath("//employee[@no=3304]");
    //        testor.xpath("//employee[1]");
    //        testor.xpath("//employee[last()]");
    //        testor.xpath("//employee[position()<3]");
            //提取第三名和第八名员工的信息
            testor.xpath("//employee[3] | //employee[8]");
            
        }
    }

    前篇:XML简单知识

  • 相关阅读:
    SCCM2012 R2实战系列之四:初始化配置
    SCCM 2012 R2实战系列之一:SQL安装
    hdu 1242(bfs)
    hdu 1728(bfs)
    hdu 1253(bfs)
    hdu 3661
    hdu 1072(bfs)
    AC模版
    hdu 1010(dfs)
    poj 3628(01_page, dfs)
  • 原文地址:https://www.cnblogs.com/sycamore0802/p/11679346.html
Copyright © 2020-2023  润新知