Java 使用dom4j解析xml文件

Java 使用dom4j解析xml文件,第1张

使用dom4j递归读取xml文件和写入代码
    public void read() throws IOException, DocumentException {
        // 创建saxReader对象
        SAXReader reader = new SAXReader();
        // 通过read方法读取一个文件 转换成Document对象
        Document document = reader.read(new File("./db/y.xml"));
        //获取根节点元素对象
        Element node = document.getRootElement();
        //遍历所有的元素节点
         listNodes(node);
        //通过路径选择节点,如果xml文件中没有该路径,则返回null
       Element element1 =(Element)document.selectSingleNode("/四大名著") ;
        //通过路径选择节点,如果xml文件中没有该路径,则返回创建一个节点
       Element element2=DocumentHelper.makeElement(document,"/四大名著/水浒传/人物");
       //添加CDATA区域
       elemen2t.addCDATA("林冲,武松");
        //获取该节点的父节点
        Element element3=element.getParent();
        element1.add(element2);
        // 写入到一个新的文件中
        writer(document);
    }
    public void listNodes(Element node){
        if(node==null){
            System.out.println("null");
            return;
        }
        System.out.println("当前节点的路径::" + node.getPath());
        //获取字节点
        List elements=node.elements();
        for(Element element:elements){
            if(element.isTextOnly()){
                System.out.println("当前节点的名称:" + element.getName()+"---- "+element.getText());
            } else {
                listNodes(element);
            }
        }
    }

    public void writer(Document document) throws IOException {
        OutputFormat format = format();
        // 创建XMLWriter对象,指定了写出文件及编码格式
        XMLWriter writer = new XMLWriter(new FileOutputStream("./db/y.xml"), format);
        // 写入
        writer.write(document);
        // 立即写入
        writer.flush();
        // 关闭 *** 作
        writer.close();

    }
    
    /**
     * 文件格式化
     *
     * @return OutputFormat
     */
    public  OutputFormat format() {
        OutputFormat format = new OutputFormat();
        format.setIndentSize(4);
        format.setNewlines(true);
        format.setTrimText(true);
        format.setPadText(true);
        format.setEncoding("UTF-8");
        return format;
    }
y.xml文件中的内容


<四大名著>
  <西游记>
    <作者>吴承恩1
    <作者>吴承恩2
    <朝代>明朝
  
  <红楼梦>
    <作者>曹雪芹
  

Xml文件路径验证器 
/**
     * 验证xPath语法是否有效
     *
     * @param path xPath路径
     * @return true/false
     */
    public static Boolean xPathVerify(String path) {
        XPathFactory factory = XPathFactory.newInstance();
        XPath xPath = factory.newXPath();
        try {
            xPath.compile(path);
        } catch (XPathExpressionException e) {
            return false;
        }
        return true;
    }
自己记录的一些笔记,内容如有不对请指正

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/722278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存