JDom是不錯的API,算得上簡(jiǎn)單高效,最重要是已經(jīng)成為jcp的一部分,這個(gè)咱得弄弄。不過(guò)www.jdom.org上寫(xiě)文檔的人實(shí)在太懶,文檔出奇的少,流傳得最廣的恐怕是IBM上面的一篇《JDom讓java XML變得容易》,不過(guò)這篇文章只涉及基本的讀寫(xiě)操作,遠不能勝任實(shí)際工作?;藘商鞎r(shí)間,把JDom的基本操作整理出來(lái)了,涵蓋了大部分的操作:元素、屬性、命名空間、PI、DTD、Schema,應付一般的應用沒(méi)什么問(wèn)題。反正我沒(méi)有在網(wǎng)上見(jiàn)到更加詳盡的版本,你見(jiàn)過(guò)的話(huà),請留下連接。暫時(shí)來(lái)不及編寫(xiě)詳細的說(shuō)明,先帖幾段程序,對有經(jīng)驗的Java開(kāi)發(fā)者來(lái)說(shuō),已經(jīng)足夠了。程序都已經(jīng)經(jīng)過(guò)了實(shí)際的測試,我使用的JDom是0.9版。
1、創(chuàng )建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("第二個(gè)元素");
- el1.addContent(text1);
- el1.addContent(em);
-
- Element el2 = new Element("元素三").addContent("第三個(gè)元素");
- root.addContent(el1);
- root.addContent(el2);
-
- //縮進(jìn)四個(gè)空格,自動(dòng)換行,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();
- }
-
- }
需要說(shuō)明的是,這個(gè)程序沒(méi)有指明使用哪個(gè)DTD文件。DTD文件的位置是在XML中指定的,而且DTD不支持命名空間,一個(gè)XML只能引用一個(gè)DTD,所以程序直接讀取XML中指定的DTD,程序本身不用指定。不過(guò)這樣一來(lái),好象就只能使用外部式的DTD引用方式了?高人指點(diǎn)。
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);
- }
-
- }
-
- }
上面的程序就指出了要引入的XML Schema文件的位置。
系統默認輸出是UTF-8,這有可能導致出現亂碼。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。