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

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

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

    數據加載中……
    JAVA XML 解析之三 -JDom
    2008年4月21日  Edited By DingDangXiaoMa
    JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現更快
    example:
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.List;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.Namespace;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.XMLOutputter;
    public class MyJDOM {
        
    public MyJDOM() {
        }
        
    public static void main(String[] args) {
            MyJDOM myJDOM 
    = new MyJDOM();
            myJDOM.parserXMLFile(
    "http://localhost/example/xml/SutInfo.xml"); //這是網絡上的資料,也可以定義為本地資料,采用相對路徑的方式。
        }
        
    /**
         * 解析文檔
         * 
         * 
    @param fileURI
         
    */
        
    private void parserXMLFile(String fileURI) {
            
    try {
                
    // 獲得org.jdom.input.SAXBuilder的一個實例,用來獲得XML文檔。
                
    // 參數false表示不進行驗證。
                
    // 參數中沒有指定使用什么解析器,因此使用默認的解析器。
                SAXBuilder builder = new SAXBuilder(false);
                
    // 得到Document
                Document doc = builder.build(fileURI);
                
    // 名字空間
                Namespace ns = Namespace.getNamespace("LIT",
                        
    "http://www.lit.edu.cn/student/");
                
    // 得到根節點LIT:StuInfo
                Element elmtStuInfo = doc.getRootElement();
                
    // 取得所有LIT:student節點的集合
                List lstStudents = elmtStuInfo.getChildren("student", ns);
                
    // 修改bigmouse的CAD分數
                for (int i = 0; i < lstStudents.size(); i++) {
                    
    // 當前學生節點
                    Element elmtStudent = (Element) lstStudents.get(i);
                    
    if (elmtStudent.getChildTextTrim("name", ns).equals("bigmouse")) {
                        
    // 所有課程節點的集合
                        List lstLesson = elmtStudent.getChildren("lesson", ns);
                        
    for (int j = 0; j < lstLesson.size(); j++) {
                            Element elmtLesson 
    = (Element) lstLesson.get(j);
                            
    if (elmtLesson.getChildTextTrim("lessonName", ns)
                                    .equals(
    "autoCAD")) {
                                
    // 修改CAD分數,100分 @_@
                                elmtLesson.getChild("lessonScore", ns).setText("10");
                                System.out.println(
    "** autoCAD:100");
                            }
                        }
                    }
    // end if
                }// end for
                
    // 添加一條學生記錄
                elmtStuInfo
                        .addContent(
                                
    new Element("student", ns)
                                .addContent(
    new Element("name", ns).setText("fannWong"))
                                .addContent(
    new Element("sex", ns).setText("female"))
                                .addContent(
    new Element("lesson", ns)
                                    .addContent(
    new Element("lessonName",ns).setText("math"))
                                    .addContent(
    new Element("lessonScore",ns).setText("85")))
                                .addContent(
    new Element("lesson", ns)
                                    .addContent(
    new Element("lessonName",ns).setText("English"))
                                    .addContent(
    new Element("lessonScore",ns).setText("95"))))
                        .addContent(
    new Element("breakLine", ns));
                System.out.println(
    "** New Element added!");
                
    // 調整一下格式,把實體引用放到最后面
                
    // 先刪除,后追加。.
                elmtStuInfo.removeChild("master", ns);
                elmtStuInfo.addContent(new Element("master", ns).addContent("master"));  //這句話,與原始文件有所不同,但總的作用就在本末添加上一個master.

                
    // 輸出文檔
                
    // 第一個參數是縮進字符串,這里是4個空格。
                
    // 第二個參數是true,表示需要換行。
                XMLOutputter printDoc = new XMLOutputter();
                printDoc.output(doc, new FileOutputStream("C:/Tomcat 6.0/webapps/struts2.0/xml/SutInfo2.xml")); //輸出的文件,可以是原文件也可是自定義文件。

            } 
    catch (JDOMException jdome) {
                System.out.println(jdome.getMessage());
            } 
    catch (FileNotFoundException fnfe) {
                System.out.println(fnfe.getMessage());
            } 
    catch (IOException ioe) {
                System.out.println(ioe.getMessage());
            }
        }
    }
    說明:
    本原代碼的作用是:1.讀取xml文件,修改名字為bigmouse的CAD成績。2.在末尾添加一條記錄。
    在讀取結點時,最后的結點集全變成了java.util.List;命名空間有自己的定義類 Namespace
    在jdk 中默認的沒有這個包:org.jdom.*.從網上下載:http://www.jdom.org/
    本小節就到這里,有興趣的可以分析一下原代碼。 下一節 SAX方式。

    posted on 2008-04-21 17:16 叮當小馬 閱讀(277) 評論(0)  編輯  收藏 所屬分類: XML

    主站蜘蛛池模板: 亚洲综合视频在线| 亚洲中文字幕无码永久在线| 无码专区—VA亚洲V天堂| 成人免费一区二区三区| 国产亚洲成归v人片在线观看| 日韩电影免费在线观看网址 | 亚洲成a人片在线观看天堂无码| 7723日本高清完整版免费| 亚洲人成网网址在线看| a级毛片无码免费真人| 亚洲码欧美码一区二区三区| 日日操夜夜操免费视频| 特级毛片免费观看视频| 免费人成视频x8x8入口| 成人无码视频97免费| 亚洲黄色网站视频| 最近高清国语中文在线观看免费| 亚洲中文字幕无码中文字| 免费永久在线观看黄网站| 一个人看的hd免费视频| 亚洲精品国产成人99久久| 欧美好看的免费电影在线观看| 亚洲精品精华液一区二区| 亚洲第一区精品观看| 久久精品免费观看国产| 亚洲国产最大av| 亚洲国产主播精品极品网红| 国产无遮挡无码视频免费软件 | 亚洲国产精品婷婷久久| 免费精品国产自产拍在| 另类小说亚洲色图| 亚洲av无码片在线播放| 成人免费a级毛片无码网站入口| 猫咪www免费人成网站| 亚洲好看的理论片电影| 午夜视频免费观看| 最近免费mv在线观看动漫 | 亚洲综合久久夜AV | 亚洲视频免费一区| 女人裸身j部免费视频无遮挡| 亚洲国产综合专区在线电影|