﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-lnj-lin</title><link>http://www.blogjava.net/lnj-lin/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 02:33:45 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 02:33:45 GMT</pubDate><ttl>60</ttl><item><title>JDom使用详解(转)</title><link>http://www.blogjava.net/lnj-lin/archive/2006/09/17/70154.html</link><dc:creator>失控的阳光</dc:creator><author>失控的阳光</author><pubDate>Sun, 17 Sep 2006 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/lnj-lin/archive/2006/09/17/70154.html</guid><wfw:comment>http://www.blogjava.net/lnj-lin/comments/70154.html</wfw:comment><comments>http://www.blogjava.net/lnj-lin/archive/2006/09/17/70154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lnj-lin/comments/commentRss/70154.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lnj-lin/services/trackbacks/70154.html</trackback:ping><description><![CDATA[(bromon原创 版权所有 转)  <p> JDom是不错的API，算得上简单高效，最重要是已经成为jcp的一部分，这个咱得<br />弄弄。不www.jdom.org上写文档的人实在太懒，文档出奇的少，流传得最广的恐怕是IBM上面的一篇《JDom让java XML变得容易》，不<br />过这篇文章只涉及基本的读写操作，远不能胜任实际工作。花了两天时间，把JDom的基本操作整理出来了，涵盖了大部分的操作：元素、属性、命名空间、<br />PI、DTD、Schema，应付一般的应用没什么问题。反正我没有在网上见到更加详尽的版本，你见过的话，请留下连接。暂时来不及编写详细的说明，先帖<br />几段程序，对有经验的Java开发者来说，已经足够了。程序都已经经过了实际的测试，我使用的JDom是0.9版。</p><p> 1、创建XML文档：<br /> import java.io.*;<br /> import org.jdom.*;<br /> import org.jdom.input.*;<br /> import org.jdom.output.*;</p><p> public class CreateXML<br /> {<br />  public void Create()<br />  {<br />   try<br />   {<br />    Document doc = new Document();   <br />    ProcessingInstruction pi=new ProcessingInstruction("xml-stylesheet","type="text/xsl" href="test.xsl"");<br />    doc.addContent(pi);<br />    <br />    Namespace ns = Namespace.getNamespace("<img alt="" src="file:///C:/Documents%20and%20Settings/jun/Application%20Data/Mozilla/Firefox/Profiles/mlzujgfb.default/ScrapBook/data/20060914200409/aurl.gif" align="absbottom" border="0" hspace="2" /><a href="http://blog.csdn.net/bromon/archive/2004/06/22/%27http://www.bromon.org" target="_top"><font color="#002c99">http://www.bromon.org"</font></a> );<br />    Namespace ns2 = Namespace.getNamespace("other", "<img alt="" src="file:///C:/Documents%20and%20Settings/jun/Application%20Data/Mozilla/Firefox/Profiles/mlzujgfb.default/ScrapBook/data/20060914200409/aurl.gif" align="absbottom" border="0" hspace="2" /><a href="http://blog.csdn.net/bromon/archive/2004/06/22/%27http://www.w3c.org" target="_top"><font color="#002c99">http://www.w3c.org"</font></a> );</p><p>    Element root = new Element("根元素", ns);<br />    root.addNamespaceDeclaration(ns2);<br />    doc.setRootElement(root);<br />    Element el1 = new Element("元素一");<br />    el1.setAttribute("属性", "属性一");<br />    <br />    Text text1=new Text("元素值");<br />             Element em = new Element("元素二").addContent("第二个元素");</p><p>    el1.addContent(text1);<br />             el1.addContent(em);<br />             <br />             Element el2 = new Element("元素三").addContent("第三个元素");</p><p>             root.addContent(el1);<br />             root.addContent(el2);<br />             <br />             //缩进四个空格,自动换行,gb2312编码<br />             XMLOutputter outputter = new XMLOutputter("  ", true,"GB2312");<br />             outputter.output(doc, new FileWriter("test.xml"));<br />         }catch(Exception e)<br />         {<br />          System.out.println(e);<br />         }<br />     }<br />     <br />     public static void main(String args[])<br />     {<br />      new CreateXML().Create();<br />     }<br />     <br /> }</p><p> 2、DTD验证的：<br /> import java.io.*;<br /> import org.jdom.*;<br /> import org.jdom.input.*;<br /> import org.jdom.output.*;</p><p> public class XMLWithDTD<br /> {<br />  public void validate()<br />  {<br />   try<br />   {<br />    SAXBuilder builder = new SAXBuilder(true);<br />    builder.setFeature("<img alt="" src="file:///C:/Documents%20and%20Settings/jun/Application%20Data/Mozilla/Firefox/Profiles/mlzujgfb.default/ScrapBook/data/20060914200409/aurl.gif" align="absbottom" border="0" hspace="2" /><a href="http://blog.csdn.net/bromon/archive/2004/06/22/%27http://xml.org/sax/features/validation" ;,true="" target="_top"><font color="#002c99">http://xml.org/sax/features/validation";,true);</font></a><br />    Document doc = builder.build(new FileReader("author.xml"));<br />    <br />    System.out.println("搞掂");<br />    XMLOutputter outputter = new XMLOutputter();<br />    outputter.output(doc, System.out);<br />   }catch(Exception e)<br />   {<br />    System.out.println(e);<br />   }<br />   <br />  }<br />  public static void main(String args[])<br />  {<br />   new XMLWithDTD().validate();<br />  }<br />  <br /> }</p><p> <br />需要说明的是，这个程序没有指明使用哪个DTD文件。DTD文件的位置是在XML中指定的，而且DTD不支持命名空间，一个XML只能引用一个DTD，所<br />以程序直接读取XML中指定的DTD，程序本身不用指定。不过这样一来，好象就只能使用外部式的DTD引用方式了？高人指点。</p><p> 3、XML Schema验证的：<br /> import java.io.*;<br /> import org.jdom.*;<br /> import org.jdom.input.*;<br /> import org.jdom.output.*;</p><p> public class XMLWithSchema<br /> {<br />  String xml="test.xml";<br />  String schema="test-schema.xml";<br />  public void validate()<br />  {<br />   try<br />   {<br />    SAXBuilder builder = new SAXBuilder(true);<br />    //指定约束方式为XML schema<br />    builder.setFeature("<img alt="" src="file:///C:/Documents%20and%20Settings/jun/Application%20Data/Mozilla/Firefox/Profiles/mlzujgfb.default/ScrapBook/data/20060914200409/aurl.gif" align="absbottom" border="0" hspace="2" /><a href="http://blog.csdn.net/bromon/archive/2004/06/22/%27http://apache.org/xml/features/validation/schema" ;="" target="_top"><font color="#002c99">http://apache.org/xml/features/validation/schema";,</font></a>  true);<br />    //导入schema文件<br />    builder.setProperty("<img alt="" src="file:///C:/Documents%20and%20Settings/jun/Application%20Data/Mozilla/Firefox/Profiles/mlzujgfb.default/ScrapBook/data/20060914200409/aurl.gif" align="absbottom" border="0" hspace="2" /><a href="http://blog.csdn.net/bromon/archive/2004/06/22/%27http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" ;,schema="" target="_top"><font color="#002c99">http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema);</font></a><br />    Document doc = builder.build(new FileReader(xml));<br />    <br />    System.out.println("搞掂");<br />    XMLOutputter outputter = new XMLOutputter();<br />    outputter.output(doc, System.out);<br />   }catch(Exception e)<br />   {<br />    System.out.println("验证失败:"+e);<br />   }<br />   <br />  }<br />  <br /> }</p><p> 上面的程序就指出了要引入的XML Schema文件的位置。</p><p> 系统默认输出是UTF-8，这有可能导致出现乱码。</p><p> 读XML文档的技巧在网上已经泛滥，这里就没有再列出来。</p><img src ="http://www.blogjava.net/lnj-lin/aggbug/70154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lnj-lin/" target="_blank">失控的阳光</a> 2006-09-17 20:12 <a href="http://www.blogjava.net/lnj-lin/archive/2006/09/17/70154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>