JDom使用详解

JDom是不错的API,算得上简单高效,最重要是已经成为jcp的一部分,这个咱得弄弄。不过www.jdom.org上写文档的人实在太懒,文档出奇的少,流传得最广的恐怕是IBM上面的一篇《JDom让java XML变得容易》,不过这篇文章只涉及基本的读写操作,远不能胜任实际工作。花了两天时间,把JDom的基本操作整理出来了,涵盖了大部分的操作:元素、属性、命名空间、PI、DTD、Schema,应付一般的应用没什么问题。反正我没有在网上见到更加详尽的版本,你见过的话,请留下连接。暂时来不及编写详细的说明,先帖几段程序,对有经验的Java开发者来说,已经足够了。程序都已经经过了实际的测试,我使用的JDom是0.9版。

 1、创建XML文档:

package org.bromon.jdom.example;

import java.io.*;

import org.jdom.*;

import org.jdom.input.*;

import org.jdom.output.*;

public class CreateXML {

public void Create() {

    try { Document doc = new Document();

            ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type="textxsl" href="test.xsl"");

            doc.addContent(pi); Namespace ns = Namespace.getNamespace("http://www.bromon.org" );

            Namespace ns2 = Namespace.getNamespace("other", "http://www.w3c.org" );

            Element root = new Element("根元素", ns);

            root.addNamespaceDeclaration(ns2); doc.setRootElement(root);

            Element el1 = new Element("元素一");

            el1.setAttribute("属性", "属性一");

            Text text1=new Text("元素值");

            Element em = new Element("元素二").addContent("第二个元素");

            el1.addContent(text1);

            el1.addContent(em);

            Element el2 = new Element("元素三").addContent("第三个元素");

            root.addContent(el1); root.addContent(el2);

            //缩进四个空格,自动换行,gb2312编码

            XMLOutputter outputter = new XMLOutputter(" ", true,"GB2312");

            outputter.output(doc, new FileWriter("test.xml")); }

    catch(Exception e) {

            System.out.println(e); }

    }

    public static void main(String args[]) {

        new CreateXML().Create(); }

            }

2、DTD验证的:

 package org.bromon.jdom.example;

import java.io.*; import org.jdom.*;

import org.jdom.input.*;

import org.jdom.output.*;

public class XMLWithDTD {

    public void validate() {

        try { SAXBuilder builder = new SAXBuilder(true);

            builder.setFeature("http://xml.org/sax/features/validation";,true);

            Document doc = builder.build(new FileReader("author.xml"));

            System.out.println("搞掂");

            XMLOutputter outputter = new XMLOutputter();

            outputter.output(doc, System.out);

    }catch(Exception e) {

        System.out.println(e); }

        }

public static void main(String args[]) {

    new XMLWithDTD().validate(); }

    }

需要说明的是,这个程序没有指明使用哪个DTD文件。DTD文件的位置是在XML中指定的,而且DTD不支持命名空间,一个XML只能引用一个DTD,所以程序直接读取XML中指定的DTD,程序本身不用指定。不过这样一来,好象就只能使用外部式的DTD引用方式了?高人指点。

3、XML Schema验证的:

package org.bromon.jdom.example;

import java.io.*; import org.jdom.*;

import org.jdom.input.*;

import org.jdom.output.*;

public class XMLWithSchema {

    String xml="test.xml";

    String schema="test-schema.xml";

    public void validate() {

        try { SAXBuilder builder = new SAXBuilder(true);

        //指定约束方式为XML schema

        builder.setFeature("http://apache.org/xml/features/validation/schema";, true);

        //导入schema文件

        builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema);

        Document doc = builder.build(new FileReader(xml));

        System.out.println("搞掂");

        XMLOutputter outputter = new XMLOutputter();

        outputter.output(doc, System.out);

            }catch(Exception e) {

                     System.out.println("验证失败:"+e); }

                }

     }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值