<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天堂| 亚洲一区二区三区无码国产| 免费视频精品一区二区三区| 情人伊人久久综合亚洲| 免费无码av片在线观看| 国产成人无码综合亚洲日韩| 亚欧免费一级毛片| 亚洲欧洲日韩国产| 人禽杂交18禁网站免费| 亚洲精品自偷自拍无码| 免费大片在线观看网站| gogo免费在线观看| 亚洲AV无码专区国产乱码电影 | 久久亚洲精品无码av| 精品国产免费观看久久久| 蜜桃传媒一区二区亚洲AV| 亚洲国产精品无码久久久久久曰| 一级毛片在线完整免费观看| 亚洲va久久久噜噜噜久久男同| 亚洲欧洲免费视频| 亚洲欧美不卡高清在线| 亚洲高清偷拍一区二区三区| 国产啪精品视频网站免费尤物| 久久久久亚洲精品天堂| 免费精品一区二区三区在线观看| 免费国产高清毛不卡片基地| 亚洲热妇无码AV在线播放| 免费观看黄色的网站| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲另类少妇17p| 99视频在线精品免费| 亚洲AV无码一区二区大桥未久| 日韩精品亚洲aⅴ在线影院| 3344免费播放观看视频 | 亚洲а∨精品天堂在线| 亚洲宅男天堂在线观看无病毒| 黄页网站免费在线观看| 国产精品美女久久久免费| 亚洲视频一区二区在线观看| 精品免费久久久久久成人影院|