JDOM是由以下几个包组成的
org.jdom 包含了所有的xml文档要素的java类
org.jdom.adapters 包含了与dom适配的java类
org.jdom.filter 包含了xml文档的过滤器类
org.jdom.input 包含了读取xml文档的类
org.jdom.output 包含了写入xml文档的类
org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口
org.jdom.xpath 包含了对xml文档xpath操作的类
二.Jdom类说明:
1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。
Attribute
CDATA
Coment
DocType
Document
Element
EntityRef
Namespace
ProscessingInstruction
Text
2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类
JDOMSource
JDOMResult
org.JDOM.input
3、输入类,一般用于文档的创建工作
SAXBuilder
DOMBuilder
ResultSetBuilder
org.JDOM.output
4、输出类,用于文档转换输出
XMLOutputter
SAXOutputter
DomOutputter
JTreeOutputter
三.JDOM主要使用方法
1.Ducument类
(1)Document的操作方法:
Element root = new Element("GREETING");
Document doc = new Document(root);
root.setText("Hello JDOM!");
或者简单的使用Document doc = new Document(new Element("GREETING").setText("Hello JDOM!t"));
注意事项:JDOM不允许同一个节点同时被2个或多个文档相关联,要在第2个文档中使用原来老文档中的节点的话。首先需要使用detach()把这个节点分开来。
(2)从文件、流、系统ID、URL得到Document对象:
DOMBuilder builder = new DOMBuilder();
Document doc = builder.build(new File("jdom_test.xml"));
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(url);
在新版本中DOMBuilder 已经Deprecated掉 DOMBuilder.builder(url),用SAX效率会比较快。
这里举一个小例子,为了简单起见,使用String对象直接作为xml数据源:
- public jdomTest() {
- String textXml = null;
- textXml = "<note>";
- textXmltextXml = textXml +
- "<to>aaa</to><from>bbb</from><heading>ccc</heading><body>ddd</body>";
- textXmltextXml = textXml + "</note>";
- SAXBuilder builder = new SAXBuilder();
- Document doc = null;
- Reader in= new StringReader(textXml);
- try {
- doc = builder.build(in);
- Element root = doc.getRootElement();
- List ls = root.getChildren();//注意此处取出的是root节点下面的一层的Element集合
- for (Iterator iter = ls.iterator(); iter.hasNext(); ) {
- Element el = (Element) iter.next();
- if(el.getName().equals("to")){
- System.out.println(el.getText());
- }
- }
- }
- catch (IOException ex) {
- ex.printStackTrace();
- }
- catch (JDOMException ex) {
- ex.printStackTrace();
- }
- }