dom4j寫xml

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class DOM4JTest {

    
/** */
    
/** */
    
/** */
    
/**
     * DOM4J讀寫XML示例
     * 
     * 
@param args
     * 
@throws Exception
     
*/

    
public static void main(String[] args) {
        
try {
            XMLWriter writer 
= null;// 聲明寫XML的對象
            SAXReader reader = new SAXReader();

            OutputFormat format 
= OutputFormat.createPrettyPrint();
            format.setEncoding(
"GBK");// 設置XML文件的編碼格式

            String filePath 
= "d:\\student.xml";
            File file 
= new File(filePath);
            
if (file.exists()) {
                Document document 
= reader.read(file);// 讀取XML文件
                Element root = document.getRootElement();// 得到根節點
                boolean bl = false;
                
for (Iterator i = root.elementIterator("學生"); i.hasNext();) {
                    Element student 
= (Element) i.next();
                    
if (student.attributeValue("sid").equals("001")) {
                        
// 修改學生sid=001的學生信息
                        student.selectSingleNode("姓名").setText("王五");
                        student.selectSingleNode(
"年齡").setText("25");

                        writer 
= new XMLWriter(new FileWriter(filePath), format);
                        writer.write(document);
                        writer.close();
                        bl 
= true;
                        
break;
                    }

                }

                
if (bl) {
                    
// 添加一個學生信息
                    Element student = root.addElement("學生");
                    student.addAttribute(
"sid""100");
                    Element sid 
= student.addElement("編號");
                    sid.setText(
"100");
                    Element name 
= student.addElement("姓名");
                    name.setText(
"嘎嘎");
                    Element sex 
= student.addElement("性別");
                    sex.setText(
"");
                    Element age 
= student.addElement("年齡");
                    age.setText(
"21");

                    writer 
= new XMLWriter(new FileWriter(filePath), format);
                    writer.write(document);
                    writer.close();
                }

            }
 else {
                
// 新建student.xml文件並新增內容
                Document _document = DocumentHelper.createDocument();
                Element _root 
= _document.addElement("學生信息");
                Element _student 
= _root.addElement("學生");
                _student.addAttribute(
"sid""001");
                Element _id 
= _student.addElement("編號");
                _id.setText(
"001");
                Element _name 
= _student.addElement("姓名");
                _name.setText(
"灰機");
                Element _age 
= _student.addElement("年齡");
                _age.setText(
"18");

                writer 
= new XMLWriter(new FileWriter(file), format);
                writer.write(_document);
                writer.close();
            }

            System.out.println(
"操作結束! ");
        }
 catch (Exception e) {
            e.printStackTrace();
        }


    }

}

執行結果應該是這樣:



循環解析節點:
private void getAllNodes(String xml) {
        
try {
            Document authtmp 
= DocumentHelper.parseText(xml);
            List
<Element> list = authtmp.selectNodes("//sms/node");
            
for (int j = 0; j < list.size(); j++{
                Element node 
= (Element) list.get(j);
                nodeByNodes(node);
            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }

    }


    
private void nodeByNodes(Element node) {
        
if (node.element("node"!= null{
            String id 
= node.attributeValue("id");
            String name 
= node.attributeValue("name");
            System.out.print(id 
+ "-------");
            System.out.println(name);
            
for (Iterator i = node.elementIterator("node"); i.hasNext();) {
                Element newNode 
= (Element) i.next();
                nodeByNodes(newNode);
            }

        }
 else {
            String id 
= node.attributeValue("id");
            String name 
= node.attributeValue("name");
            System.out.print(id 
+ "-------");
            System.out.println(name);
        }

    }
發佈了25 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章