关于dom4j的一些总结

      由于公司要求掌握dom4j,因此自己趁着闲,去看了看dom4j的部分知识,下面给大家说一下新的

      首先,说一下概念,dom4j是用来解析XML的,功能优越,非常优秀

      解析XML的过程都是通过获取Document对象来进行操作的,然后通过获取的Document对象来对各个节点以及属性进行相应的操作,获取Document对象有三种方式:

    1)自己动手来创建Document对象

       Document document = DocumentHelper.createDocument();

       Element root = document.addElement("xxxx");//xxxx为根节点

    2)读取XML文件来获取对应的Document对象

       //创建SAXReader对象

       SAXReader reader = new SAXReader();

       //读取文件,转换成Document

       Document document = reader.read(new File("xxx.xml"));

    3)读取XML文本内容获取Document对象

        String xmlStr = "<student>...</student>"

        Document document = DocumentHelper.parseText(xmlStr);

 

下面将详细介绍一些常用的方法:
1.获取文档的根节点
 Element root = document.getRootElement();
2.取得某个节点的子节点,即获取节点node的xxxx子节点
 Element element = node.element("xxxxx");
3.取得节点的文字
 String text = node.getText();
4.取得某节点下所有名为“kobe”的子节点
 List nodes = node.elements("kobe");
  for(Iterator it = nodes.iterator;it.hasNext();)
  { 
       Element elm = (Element)it.next();
  }
5.在某节点下添加新的子节点

  Element elm = node.addElement("ElementName");

6.删除某节点

 AElement.remove(BElement);


7.添加一个CDATA节点
 Element cdElm = node.addElement("content");
  cdElm.addCDATA("CDATA区域");
8.取得某节点下的某属性
 Element root = document.getRootElement();
  Attribute attr = root.attribute("id");
9.取得属性的文字
  String text = attr.getText();
10.删除某属性
 Attribute attr = root.attribute("id");
  root.remove(attr);
11.遍历某节点的所有属性
  for(Iterator it = node.attributeIterator();it.hasNext();)
  {
       Attribute attribute = (Attribute)it.next();
       String text = attribute.getText();
       System.out.println(text);
  }
12.设置某节点的属性和文字
   node.addAttribute("name","zhangJB");
13.设置属性的文字
   Attribute attr = node.attribute("name");
   attr.setText("lc");
下面是一个关于创建好XML写入到相应的文件中的函数

  public static void writerDocumentToNewFile(Document document)
    throws Exception
    {
    //输出格式
    OutputFormat format = OutputFormat.createPrettyPrint();
    //设置编码
    format.setEncoding("UTF-8");
    //创建输出流,使用Writer
    FileOutputStream fos = new FileOutputStream("G:/dom4j/stu01.xml");
    //创建xml输出流
    XMLWriter writer = new XMLWriter(fos,format);
    //生成xml文件
    writer.write(document);
    writer.flush();
    writer.close();
   
    }   


一个关于遍历XML文件的函数

 public static void listNodes(Element node)
    {
    System.out.println("当前节点的名称:" + node.getName());
    //首先获取当前节点的所有属性节点
    List<Attribute> list = node.attributes();
    //遍历属性节点
    for(Attribute attribute:list)
    {
    System.out.println("属性:"+attribute.getName()+":"+attribute.getValue());
    }
    //如果当前节点内容不为空,则输出
    if(!(node.getTextTrim().equals("")))
    {
    System.out.println(node.getName()+":"+node.getText());
    }
    Iterator<Element> iterator = node.elementIterator();
    while(iterator.hasNext())
    {
    Element e = iterator.next();
    listNodes(e);
    }
    }







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值