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

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

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

    隨筆 - 154  文章 - 60  trackbacks - 0
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    聲明:

    該blog是為了收集資料,認(rèn)識(shí)朋友,學(xué)習(xí)、提高技術(shù),所以本blog的內(nèi)容除非聲明,否則一律為轉(zhuǎn)載??!

    感謝那些公開自己技術(shù)成果的高人們?。?!

    支持開源,尊重他人的勞動(dòng)!!

    常用鏈接

    留言簿(3)

    隨筆分類(148)

    隨筆檔案(143)

    收藏夾(2)

    其他

    學(xué)習(xí)(技術(shù))

    觀察思考(非技術(shù))

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    對(duì)xml文檔的解析java中有很多種方法,例如使用domsaxjdom等等,相比之下,我覺得還是jdom比較方便。下面介紹一下jdom的基本使用方法,不對(duì)之處還請(qǐng)各位網(wǎng)友之交。謝謝!

    最新的jdom可以到他的網(wǎng)站:http://www.jdom.org去下載,現(xiàn)在的版本是1.0版,下載之后將得到jdom-1.0.zip文件,解壓后進(jìn)入build文件夾將看到一個(gè)名為jdom.jar的包,這個(gè)就是jdom的類包了,將它加到你的classpath里就可以使用jdom提供的各種處理xml的類和他們的方法了。應(yīng)該注意的是在解壓后的文件夾里還有一個(gè)lib文件夾,里面保存的是使用jdom的環(huán)境包,不過我在我的jdk1.4下使用沒引用這些包一樣好用,不知道是jdk1.4中已經(jīng)包含了這些東西還是原來我的eclipse已經(jīng)引用了這些包,呵呵。

    好了,書歸正傳,現(xiàn)在開始介紹jdom包的使用。


       jdom
    包的結(jié)構(gòu)包括:

    org.jdom                包含了所有的xml文檔要素的java

    org.jdom.adapters         包含了與dom適配的java

    org.jdom.filter            包含了xml文檔的過濾器類

    org.jdom.input            包含了讀取xml文檔的類

    org.jdom.output           包含了寫入xml文檔的雷

    org.jdom.transform        包含了將jdom xml文檔接口轉(zhuǎn)換為其他xml文檔接口

    org.jdom.xpath            包含了對(duì)xml文檔xpath操作的類

    下面將通過一個(gè)例子介紹jdom的常用操作

    生成xml文檔:

    下面的類將生成一個(gè)xml文檔:

    /*

     * Created on 2004-10-9

     *

     * 寫入xml文件的例子

     */

    /**

     * @author lnman

     *

     * To change the template for this generated type comment go to

     * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

     */

    import java.io.*;

    import org.jdom.*;

    import org.jdom.output.*;

    public class WriteXML

    {

        public void BuildXML() throws Exception

        {

            Element root,student,number,name,age;

                   

            root = new Element("student-info"); //生成根元素:student-info  

            student = new Element("student");      //生成元素:student,該元素中將包含元素number,name,age

            number = new Element("number");

            name = new Element("name");

            age = new Element("age");

           

            Document doc = new Document(root);    //將根元素植入文檔doc

           

            number.setText("001");

            name.setText("lnman");

            age.setText("24");

            student.addContent(number);

            student.addContent(name);

            student.addContent(age);

            root.addContent(student);

           

            Format format = Format.getCompactFormat();

            format.setEncoding("gb2312");           //設(shè)置xml文件的字符為gb2312

            format.setIndent("    ");               //設(shè)置xml文件的縮進(jìn)為4個(gè)空格

           

            XMLOutputter XMLOut = new XMLOutputter(format);//在元素后換行,每一層元素縮排四格

            XMLOut.output(doc, new FileOutputStream("studentinfo.xml")); 

           

        }

       

        public static void main(String[] args) throws Exception

        {

            WriteXML w = new WriteXML();

            System.out.println("Now we build an XML document .....");

            w.BuildXML();

            System.out.println("finished!");

        }

    }

    生成的xml文檔為:

    <?xml version="1.0" encoding="gb2312"?>

    <student-info>

        <student>

            <number>001</number>

            <name>lnman</name>

            <age>24</age>

        </student>

    </student-info>

    讀取xml文檔的例子:

    /*

     * Created on 2004-10-9

     *

     *jdom讀取xml文檔的例子

     *

     */

    /**

     * @author lnman

     *

     * To change the template for this generated type comment go to

     * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments

     */

    import org.jdom.output.*;

    import org.jdom.input.*;

    import org.jdom.*;

    import java.io.*;

    import java.util.*;

    public class ReadXML

    {

       

        public static void main(String[] args) throws Exception

        {

           

           

            SAXBuilder builder = new SAXBuilder();

            Document read_doc = builder.build("studentinfo.xml");

            Element stu = read_doc.getRootElement();

            List list = stu.getChildren("student");

            for(int i = 0;i < list.size();i++)

            {

                Element e = (Element)list.get(i);

                String str_number = e.getChildText("number");

                String str_name = e.getChildText("name");

                String str_age = e.getChildText("age");

                System.out.println("---------STUDENT--------------");

                System.out.println("NUMBER:" + str_number);

                System.out.println("NAME:" + str_name);

                System.out.println("AGE:" + str_age);

                System.out.println("------------------------------");

                System.out.println();

            }      

        }

    }

    Xpath例子:

    JDOM的關(guān)于XPATHapiorg.jdom.xpath這個(gè)包里。這個(gè)包下,有一個(gè)抽象類XPath.java和實(shí)現(xiàn)類JaxenXPath.java, 使用時(shí)先用XPath類的靜態(tài)方法newInstance(String xpath)得到XPath對(duì)象,然后調(diào)用它的selectNodes(Object context)方法或selectSingleNode(Object context)方法,前者根據(jù)xpath語(yǔ)句返回一組節(jié)點(diǎn)(List對(duì)象);后者根據(jù)一個(gè)xpath語(yǔ)句返回符合條件的第一個(gè)節(jié)點(diǎn)(Object類型)。請(qǐng)看jdom-1.0自帶的范例程序:
         
    它分析在web.xml文件中的注冊(cè)的servlet的個(gè)數(shù)及參數(shù)個(gè)數(shù),并輸出角色名。
    web.xml
    文件:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!--
    <!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
        "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
    -->

    <web-app>
        <servlet>
            <servlet-name>snoop</servlet-name>
            <servlet-class>SnoopServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>file </servlet-name>
            <servlet-class>ViewFile</servlet-class>
            <init-param>
                <param-name>initial</param-name>
                <param-value>1000</param-value>
                <description>The initial value for the counter  <!-- optional --></description>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>mv</servlet-name>
            <url-pattern>*.wm</url-pattern>
        </servlet-mapping>
        <distributed/>

        <security-role>
          <role-name>manager</role-name>
          <role-name>director</role-name>
          <role-name>president</role-name>
        </security-role>
    </web-app>

    處理程序:
    import java.io.*;
    import java.util.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import org.jdom.xpath.*;

    /**
     * <p><code>XPathReader</code> demonstrates how to
     *   read a Servlet 2.2 Web Archive file using XPath.
     * </p>
     * 
     * @author Jason Hunter
     * @version 1.0
     */
    public class XPathReader {
        
        public static void main(String[] args) throws IOException, JDOMException {
            if (args.length != 1) {
                System.err.println("Usage: java XPathReader web.xml");
                return;
            }
            String filename = args[0];//
    從命令行輸入web.xml
            PrintStream out = System.out;

            SAXBuilder builder = new SAXBuilder();
            Document doc = builder.build(new File(filename));//
    得到Document對(duì)象

            // Print servlet information
            XPath servletPath = XPath.newInstance("http://servlet");//,
    選擇任意路徑下servlet元素
            List servlets = servletPath.selectNodes(doc);//
    返回所有的servlet元素。

            out.println("This WAR has "+ servlets.size() +" registered servlets:");
            Iterator i = servlets.iterator();
            while (i.hasNext()) {//
    輸出servlet信息
                Element servlet = (Element) i.next();
                out.print(""t" + servlet.getChild("servlet-name")
                                        .getTextTrim() +
                          " for " + servlet.getChild("servlet-class")
                                           .getTextTrim());
                List initParams = servlet.getChildren("init-param");
                out.println(" (it has " + initParams.size() + " init params)"); 
            }
                
            // Print security role information
            XPath rolePath = XPath.newInstance("http://security-role/role-name/text()");
            List roleNames = rolePath.selectNodes(doc);//
    得到所有的角色名

            if (roleNames.size() == 0) {
                out.println("This WAR contains no roles");
            } else {
                out.println("This WAR contains " + roleNames.size() + " roles:");
                i = roleNames.iterator();
                while (i.hasNext()) {//
    輸出角色名
                    out.println(""t" + ((Text)i.next()).getTextTrim());
                }
            }
        }    
    }

    輸出結(jié)果:
    C:"java>java   XPathReader web.xml
    This WAR has 2 registered servlets:
            snoop for SnoopServlet (it has 0 init params)
            file for ViewFile (it has 1 init params)
    This WAR contains 3 roles:
            manager
            director
            president

    posted on 2007-11-20 17:04 lk 閱讀(380) 評(píng)論(0)  編輯  收藏 所屬分類: xml
    主站蜘蛛池模板: 国产一级做a爱免费视频| 最好2018中文免费视频| 免费国产高清视频| 黄色片免费在线观看| 亚洲中文无码永久免费| 亚洲精品福利网泷泽萝拉| 亚洲日韩精品无码一区二区三区| 四虎影永久在线高清免费| 毛片免费观看的视频在线| 69式互添免费视频| 最近新韩国日本免费观看| 免费看黄的成人APP| 国产免费黄色无码视频| 免费精品久久久久久中文字幕| 亚洲欧美不卡高清在线| 亚洲午夜无码久久| 亚洲校园春色另类激情| 亚洲成av人片在线看片| 久久久久亚洲AV无码网站| 久久国产亚洲电影天堂| 亚洲精品无码久久久久去q| 国产精品亚洲mnbav网站 | 免费一级毛片清高播放| 成人免费AA片在线观看| 最新黄色免费网站| 亚洲一级毛片免费看| 蜜桃AV无码免费看永久| 色播精品免费小视频| 黄色成人免费网站| 国产h视频在线观看免费| 成人浮力影院免费看| 久久国内免费视频| 欧美三级在线电影免费| 在线免费观看污网站| 日本特黄特黄刺激大片免费| 国产美女a做受大片免费| 国产青草视频在线观看免费影院| 在线观看亚洲免费视频| 国产又黄又爽又刺激的免费网址| 四虎影视精品永久免费网站| 亚洲一区二区高清|