读写xml笔记

读写xml

import  java.io.File;
import  java.io.FileWriter;
import  java.io.IOException;
import  java.util.Iterator;
import  java.util.List;
import  org.dom4j.Document;
import  org.dom4j.DocumentException;
import  org.dom4j.Element;
import  org.dom4j.Node;
import  org.dom4j.io.OutputFormat;
import  org.dom4j.io.SAXReader;
import  org.dom4j.io.XMLWriter;

public  class  TestReadXml {

         public  static  String getClassPath() {
                return  XmlParser. class .getClass().getResource( "/" ).toString();
       }

         public  static  void  ff() {
              File f2 =  new  File(XmlParser. class .getResource( "" ).getPath());
              System.  out .println(f2);
       }

         public  static  void  main(String[] args) {
                try  {
                     SAXReader reader =  new  SAXReader();
                     String xmlPath = System. getProperty( "user.dir" ) +  "\\src\\test\\java\\test.xml"  ;
                     File file =  new  File(xmlPath);
                       if  (file.exists()) {
                           Document document = reader.read(file);
                           Element root = document.getRootElement();
                             // 根据节点名获取节点
                            System.  out .println(root.element( "login"  ).getTextTrim());

                             // 遍历节点
                             for  (Iterator i = root.elementIterator(); i.hasNext();) {
                                  Element element = (Element) i.next();
                                  System.  out .println(element.asXML());
                           }

                             // 根据xpath 根据节点名,节点属性查找指定的节点
                           System.  out .println( "----------------------获取指定节点的值----------------------------------"  );
                           List<Node> node1 = root.selectNodes( "//p[@id='hehe']" );
                             for  (Node n : node1) {
                                  System.  out .println(n.getName());
                                  System.  out .println(n.getText());
                           }
                           System.  out .println( "----------------------精确查找----------------------------------"  );
                             // 精确查找
                           List<Node> node2 = root.selectNodes( "//div/p[@id='hi']" );
                             for  (Node n : node2) {
                                  System.  out .println(n.getName());
                                  System.  out .println(n.getText());
                           }
                             // hh 为xml节点名
                           Element hh = root.element(  "hh" );

                           System.  out .println( "---------------------获取父节点的名字-----------------------"  );
                             // 获取父节点
                           System.  out .println(hh.getParent().getName());

                             // 设置节点的值
                           hh.setText(  "21" );
                           System.  out .println(hh.getText());

                             // 写入文件
                           OutputFormat format = OutputFormat.createPrettyPrint();
                           format.setEncoding(  "utf-8" );
                           XMLWriter writer =  new  XMLWriter( new  FileWriter(xmlPath), format);
                           writer.write(document);
                           writer.close();

                             /*
                            * //获取子节点 System.out.println(hh.getNodeType());
                            * System.out.println(hh.getData());
                            * System.out.println(hh.getName());
                            * System.out.println(hh.getText());
                            * System.out.println(hh.getTextTrim()); hh.setText("21");
                            * System.out.println(hh.getTextTrim());
                            */
                     }
              }  catch  (DocumentException e) {
                     e.printStackTrace();
              }  catch  (IOException e) {
                     e.printStackTrace();
              }
       }

}
//参考网址:http://berdy.iteye.com/blog/807883
//

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值