jdom生成xml 、DTD验证《转》

1、创建XML文档:
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="text/xsl" 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编码 ,此构造方法在jdom1.0中不再使用。
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验证的:
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验证的:
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);
}

}

}

上面的程序就指出了要引入的XML Schema文件的位置。

系统默认输出是UTF-8,这有可能导致出现乱码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值