<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-26  評論-13  文章-46  trackbacks-0
    JDom是不錯的API,算得上簡單高效,最重要是已經成為jcp的一部分,這個咱得弄弄。不www.jdom.org上寫文檔的人實在太懶,文檔出奇的少,流傳得最廣的恐怕是IBM上面的一篇《JDom讓java XML變得容易》,不過這篇文章只涉及基本的讀寫操作,遠不能勝任實際工作?;藘商鞎r間,把JDom的基本操作整理出來了,涵蓋了大部分的操作:元素、屬性、命名空間、PI、DTD、Schema,應付一般的應用沒什么問題。反正我沒有在網上見到更加詳盡的版本,你見過的話,請留下連接。暫時來不及編寫詳細的說明,先帖幾段程序,對有經驗的Java開發者來說,已經足夠了。程序都已經經過了實際的測試,我使用的JDom是0.9版。

     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編碼
                 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,這有可能導致出現亂碼。

     讀XML文檔的技巧在網上已經泛濫,這里就沒有再列出來。

    posted on 2005-06-24 15:26 似水流年 閱讀(258) 評論(0)  編輯  收藏 所屬分類: XML

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费看黄福利app导航看一下黄色录像 | 亚洲av午夜成人片精品电影| 亚洲沟沟美女亚洲沟沟| 最近中文字幕mv免费高清在线 | 亚洲免费中文字幕| 国产成人免费高清激情明星| 亚洲自偷精品视频自拍| 美女视频黄免费亚洲| 性xxxx黑人与亚洲| 国产精品色午夜免费视频| 特黄aa级毛片免费视频播放| 又大又黄又粗又爽的免费视频| 西西人体大胆免费视频| 国产亚洲人成A在线V网站| 亚洲精品WWW久久久久久| 一级一看免费完整版毛片| 九月丁香婷婷亚洲综合色| 久久国产乱子伦精品免费强| 亚洲网站在线免费观看| 成年女人免费视频播放体验区| 亚洲人成网站色7799| 免费又黄又爽的视频| 久久国产精品免费| 日本免费v片一二三区| 日本一区二区在线免费观看| 亚洲深深色噜噜狠狠爱网站| 色偷偷噜噜噜亚洲男人| 国产亚洲精品拍拍拍拍拍 | 最近中文字幕mv手机免费高清| 亚洲成a∨人片在无码2023| 亚洲视频人成在线播放| 久久午夜夜伦鲁鲁片无码免费| 亚洲国产精品xo在线观看| 国产成人免费A在线视频| 中文字幕在线免费看线人| 亚洲午夜精品第一区二区8050| 成人无码WWW免费视频| 在线观看亚洲AV日韩AV| 亚洲色图综合在线| 免费无码AV片在线观看软件| 一个人看www免费高清字幕|