jdom学习(2)

Jdom使用详解及实例(2)
接上一节:

(3)DOMdocumentJDOMDocument之间的相互转换使用方法,简单!

DOMBuilder builder = new DOMBuilder();

org.jdom.Document jdomDocument = builder.build(domDocument);

DOMOutputter converter = new DOMOutputter();// work with the JDOM document…

org.w3c.dom.Document domDocument = converter.output(jdomDocument);

// work with the DOM document…

2.XML文档输出

XMLOutPutter类:

JDOM的输出非常灵活,支持很多种io格式以及风格的输出

Document doc = new Document(...);

XMLOutputter outp = new XMLOutputter();

outp.output(doc, fileOutputStream); // Raw output

outp.setTextTrim(true); // Compressed output

outp.output(doc, socket.getOutputStream());

outp.setIndent(" ");// Pretty output

outp.setNewlines(true);

outp.output(doc, System.out);

3.Element 类:

(1)浏览Element

Element root = doc.getRootElement();//获得根元素element

List allChildren = root.getChildren();// 获得所有子元素的一个list

List namedChildren = root.getChildren("name");// 获得指定名称子元素的list

Element child = root.getChild("name");//获得指定名称的第一个子元素

JDOM给了我们很多很灵活的使用方法来管理子元素(这里的Listjava.util.List

List allChildren = root.getChildren();

allChildren.remove(3); // 删除第四个子元素

allChildren.removeAll(root.getChildren("jack"));// 删除叫“jack”的子元素

root.removeChildren("jack"); // 便捷写法

allChildren.add(new Element("jane"));// 加入

root.addContent(new Element("jane")); // 便捷写法

allChildren.add(0, new Element("first"));

(2)移动Elements:

JDOM里很简单

Element movable = new Element("movable");

parent1.addContent(movable); // place

parent1.removeContent(movable); // remove

parent2.addContent(movable); // add

(3)Elementtext内容读取

xml 代码
  1. <description>  
  2.   
  3. A cool demo  
  4.   
  5. description>  

// The text is directly available

// Returns "\n A cool demo\n"

String desc = element.getText();

// There's a convenient shortcut

// Returns "A cool demo"

String desc = element.getTextTrim();

(4)Elment内容修改

element.setText("A new description");

3.可正确解释特殊字符

xml 代码
  1. element.setText("<xml> content");  

4.CDATA的数据写入、读出

xml 代码
 
  1. element.addContent(new CDATA("<xml> content"));  
  2.   
  3. String noDifference = element.getText();  
  4.   
  5. 混合内容  
  6.   
  7. element可能包含很多种内容,比如说  
  8.   
  9. <table>  
  10.   
  11.   
  12.   
  13. Some text  
  14.   
  15. <tr>Some child elementtr>  
  16.   
  17. table>  
  18.   
  19. 取table的子元素tr  
  20.   
  21. String text = table.getTextTrim();  
  22.   
  23. Element tr = table.getChild("tr");  
  24.   
  25. 也可使用另外一个比较简单的方法  
  26.   
  27. List mixedCo = table.getContent();  
  28.   
  29. Iterator itr = mixedCo.iterator();  
  30.   
  31. while (itr.hasNext()) {  
  32.   
  33. Object o = i.next();  
  34.   
  35. if (o instanceof Comment) {...}  
  36.   
  37. // 这里可以写成Comment, Element, Text, CDATA,ProcessingInstruction, 或者是EntityRef的类型  
  38.   
  39. }  
  40.   
  41. // 现在移除Comment,注意这里游标应为1。这是由于回车键也被解析成Text类的缘故,所以Comment项应为1。  
  42.   
  43. mixedCo.remove(1);   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值