`
shen211
  • 浏览: 46584 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jdom生成xml 、DTD验证《转》

    博客分类:
  • java
阅读更多
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,这有可能导致出现乱码。
分享到:
评论
2 楼 shen211 2010-08-25  
这个是很久以前的了,你参考参考。该改的做相应改动即可。
好久没来了,以后还是每天来看看,太对不住有评论的朋友了
1 楼 xmllong 2010-07-23  
楼主呀,你这个JDOM用的是什么版本呀,我加了JAR包,怎么老不对呢

相关推荐

Global site tag (gtag.js) - Google Analytics