dom4j解析xml文件,添加新节点,添加节点内容,读取文件中节点内容作为新增节点内容

package org.dom4j.io;


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;


import org.dom4j.Document;
import org.dom4j.Element;
import org.jaxen.function.SubstringBeforeFunction;


public class InsertNodeSwh {


    private static String path = "F:\\项目是SVN\\40_源码";


    public static void main(String[] args) {
        Element element = null;
        try {
            File folder = new File(path);
            //list()获取目录下所有文件 
            //list()获取目录下所有文件及目录的绝对路径
            //使用增强for遍历目录下文件(批量处理xml文件)
            for (File f : folder.listFiles()) {
                System.out.println("获取文件:" + f);


                //创建SAXReader,调用起read方法解析xml文件
                SAXReader reader = new SAXReader();


                //读取文件,获取document对象
                Document document = reader.read(f);


                //获取根节点
                element = document.getRootElement();
                System.out.println("根节点:" + element);


                //获取XMLNode节点,截取需要的节点内容
                String sElement1 = element.element("Property")
                        .element("XMLNode").getText();
                System.out.println("ss1获取节点的内容:" + sElement1);
                String ss1 = sElement1.substring(0, sElement1.indexOf("\\"));
                System.out.println("ss1截取的内容:" + ss1);


                System.out.println("**************************");


                String sElement2 = element.element("Property")
                        .element("stdTableName").getText();
                System.out.println("sElement获取节点的内容:" + sElement2);


                System.out
                        .println("===================================================================================================");


                //给根节点添加Property节点
                Element brandElement = element.addElement("Property");
                //给Property节点添加子节点
                Element typeElement1 = brandElement.addElement("Name");
                typeElement1.setText("定期期限");//添加节点内容
                Element typeElement2 = brandElement.addElement("Level");
                typeElement2.setText("1");
                Element typeElement3 = brandElement.addElement("IsKey");
                typeElement3.setText("0");
                Element typeElement4 = brandElement.addElement("Key");
                //typeElement4.setText("");
                Element typeElement5 = brandElement.addElement("stdTableName");
                typeElement5.setText(sElement2);
                Element typeElement6 = brandElement.addElement("stdFieldName");
                typeElement6.setText("N_DQQX");
                Element typeElement7 = brandElement.addElement("stdType");
                typeElement7.setText("Int");
                Element typeElement8 = brandElement.addElement("stdLength");
                //typeElement8.setText("");
                Element typeElement9 = brandElement.addElement("XMLNode");
                typeElement9.setText(ss1 + "定期期限");
                Element typeElement10 = brandElement.addElement("DefaultValue");
                //typeElement10.setText("");
                Element typeElement11 = brandElement
                        .addElement("TranslateType");
                //typeElement11.setText("");
                Element typeElement12 = brandElement
                        .addElement("TranslateCondition");
                //typeElement12.setText("");
                Element typeElement13 = brandElement.addElement("PreCondition");
                //typeElement13.setText("");


                try {
                    Writer osWrite = new OutputStreamWriter(
                            new FileOutputStream(f));//创建输出流  
                    OutputFormat format = OutputFormat.createPrettyPrint(); //获取输出的指定格式    
                    format.setEncoding("UTF-8");//设置编码 ,确保解析的xml为UTF-8格式  
                    XMLWriter writer = new XMLWriter(osWrite, format);//XMLWriter 指定输出文件以及格式    
                    writer.write(document);//把document写入xmlFile指定的文件(可以为被解析的文件或者新创建的文件)    
                    writer.flush();
                    writer.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.println(ex.getMessage());
        }
    }
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以使用 Java 内置的 DOM (Document Object Model) 来读取 XML 文件某一个节点内容。具体步骤如下: 1. 加载 XML 文件并创建 Document 对象 2. 使用 `getElementsByTagName()` 方法获取指定节点的 NodeList 3. 遍历 NodeList,找到目标节点并获取其内容 以下是一个简单的例子,假设我们要读取 XML 文件 "book" 元素的 "title" 子元素的内容: ```java import org.w3c.dom.*; import javax.xml.parsers.*; import java.io.*; public class ReadXMLNode { public static void main(String[] args) throws Exception { File inputFile = new File("books.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(inputFile); doc.getDocumentElement().normalize(); // 获取 "book" 元素列表 NodeList bookList = doc.getElementsByTagName("book"); // 遍历 "book" 元素列表 for (int i = 0; i < bookList.getLength(); i++) { Node bookNode = bookList.item(i); if (bookNode.getNodeType() == Node.ELEMENT_NODE) { Element bookElement = (Element) bookNode; // 获取 "title" 元素 Node titleNode = bookElement.getElementsByTagName("title").item(0); // 输出 "title" 元素的内容 System.out.println("Title: " + titleNode.getTextContent()); } } } } ``` 在这个例子,我们使用 `getElementsByTagName()` 方法获取 "book" 元素列表,然后遍历列表以查找目标元素。对于每个 "book" 元素,我们使用 `getElementsByTagName()` 方法获取其 "title" 子元素,并使用 `getTextContent()` 方法获取其文本内容。你可以将 "book" 和 "title" 替换为你需要的元素名称,以读取不同的节点

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值