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

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

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

    使用DOM解析XML文檔

    ??????? 當使用DOM解析XML文檔時,使用的是DOM的思想,因而不可避免需要將XML文檔轉換成DOM樹。DOM解析器在裝入XML文檔時,已經在內存中將XML文檔的每個元素轉換成DOM樹的每個節點了。

    對于下面的一個簡單XML文檔:

    ???xml代碼:

    <? xml?version="1.0"?encoding="GB2312"?standalone="no" ?>
    < 書籍列表 >
    ????
    < 書籍?分類="計算機"?書名="XML 的今生今世"?書號 ="SN-123" >
    ????????
    < 價格 > 66.66 </ 價格 >
    ????????
    < 簡要介紹 >
    ????????????該書詳細描寫XML的從出生到衰老的整個過程
    ????????
    </ 簡要介紹 >
    ????????
    < 出版社 > spoto出版社 </ 出版社 >
    ????????
    < 主要內容 >
    ????????????
    < 章節?title ="前言" ?number ="0" />
    ????????????
    < 章節?title ="XML的歷史" ?number ="1" >
    ????????????????
    < 主題?name ="SGML,XML的前生" />
    ????????????????
    < 主題?name ="HTML與SGML" />
    ????????????????
    < 主題?name ="XML的應用領域" />
    ????????????
    </ 章節 >
    ????????????
    < 章節?title ="XML文檔規則" ?number ="2" >
    ????????????????
    < 主題?name ="元素" />
    ????????????????
    < 主題?name ="屬性" />
    ????????????????
    < 主題?name ="注釋" />
    ????????????
    </ 章節 >
    ????????
    </ 主要內容 >
    ????
    </ 書籍 >
    </ 書籍列表 >

    ???使用DOM解析該文檔的代碼如下:
    ???java 代碼:
    package?contentsParser;

    import?java.io.IOException;

    import?org.apache.xerces.parsers.DOMParser;
    import?org.w3c.dom.Attr;
    import?org.w3c.dom.Document;
    import?org.w3c.dom.Element;
    import?org.w3c.dom.Node;
    import?org.w3c.dom.NodeList;
    import?org.xml.sax.SAXException;


    public?class?TestContensDOMParser?{

    ????
    /**
    ?????*?
    @param?args
    ?????
    */

    ????
    public?static?void?main(String[]?args)?{
    ????????TestContensDOMParser?tcdp?
    =?new?TestContensDOMParser();
    ????????tcdp.parseXMLFile(
    "contents.xml");
    ????}

    ????
    ????
    ????
    /*
    ?????*?解析文檔
    ?????
    */

    ????
    public?void?parseXMLFile(String?fileName)?{
    ????????
    try?{
    ????????????DOMParser?parser?
    =?new?DOMParser();
    ????????????parser.parse(fileName);????
    //????解析文件
    ????????????
    ????????????
    //????獲得文檔對象
    ????????????Document?doc?=?parser.getDocument();
    ????????????
    ????????????
    //????獲得根節點
    ????????????Element?root?=?doc.getDocumentElement();
    ????????????
    ????????????
    //?????得到所有書籍節點
    ????????????NodeList?bookList?=?root.getElementsByTagName("書籍");
    ????????????
    ????????????System.out.println(
    "XML文件開始解析..");
    ????????????
    ????????????
    for(int?i=0;i<bookList.getLength();i++)?{
    ????????????????
    //????獲得當前書籍元素
    ????????????????Element?book?=?(Element)?bookList.item(i);
    ????????????????System.out.println(
    "書籍:分類:"?+?book.getAttribute("分類")?+?"?;?"
    ????????????????????????
    +?"書名:"?+?book.getAttribute("書名")?+?"?;?"?+?"書號:"?+?book.getAttribute("書號")?);
    ????????????????
    ????????????????NodeList?priceList?
    =??book.getElementsByTagName("價格");
    ????????????????System.out.println(
    "價格:"
    ????????????????????????????
    +?priceList.item(0).getFirstChild().getNodeValue());
    ????????????????
    ????????????????NodeList?introList?
    =??book.getElementsByTagName("簡要介紹");
    ????????????????System.out.println(
    "簡要介紹:"
    ????????????????????????????
    +?introList.item(0).getFirstChild().getNodeValue());
    ????????????????
    ????????????????NodeList?publishList?
    =??book.getElementsByTagName("出版社");
    ????????????????System.out.println(
    "出版社:"
    ????????????????????????????
    +?publishList.item(0).getFirstChild().getNodeValue());
    ????????????????
    ????????????????NodeList?contentList?
    =??book.getElementsByTagName("主要內容");
    ????????????????System.out.println(
    "主要內容:");
    ????????????????
    ????????????????
    for(int?j=0;i<contentList.getLength();i++)?{
    ????????????????????
    //?獲得主要內容的元素
    ????????????????????Element?content?=?(Element)?contentList.item(0);
    ????????????????
    ????????????????????NodeList?zhangjieList?
    =?content.getElementsByTagName("章節");
    ????????????????????
    ????????????????????
    for(int?k=0;k<zhangjieList.getLength();k++)?{
    ????????????????????????
    //?章節屬性
    ????????????????????????Element?zhangjie?=?(Element)?zhangjieList.item(k);
    ????????????????????????System.out.print(
    "章節:??");
    ????????????????????????System.out.print(
    "title:"?+?zhangjie.getAttribute("title"));
    ????????????????????????System.out.print(
    ";");
    ????????????????????????System.out.print(
    "number:?"+zhangjie.getAttribute("number"));
    ????????????????????????System.out.println();
    ????????????????????????
    ????????????????????????
    //????章節內容????????????????????
    ????????????????????????NodeList?subjectList?=?zhangjie.getElementsByTagName("主題");
    ????????????????????????
    for(int?n=0;n<subjectList.getLength();n++)?{
    ????????????????????????????Element?subject?
    =?(Element)?subjectList.item(n);
    ????????????????????????????System.out.println(
    "主題:"?+?subject.getAttribute("name"));
    ????????????????????????}

    ????????????????????????
    ????????????????????}

    ????????????????}

    ????????????}

    ????????????System.out.println();
    ????????????System.out.println(
    "XML文件解析結束");
    ????????????
    ????????}
    ?catch?(SAXException?e)?{
    ????????????e.printStackTrace();
    ????????}
    ?catch?(IOException?e)?{
    ????????????e.printStackTrace();
    ????????}

    ????}

    ????

    }

    ?通過上面的代碼可以看出,DOM解析器處理XML文檔的方式類似于樹的遍歷。當我們在代碼中以遍歷樹的方式遍歷每個節點時,DOM解析器負責對應處理文檔中的每個元素。

    posted on 2008-09-28 11:03 nonels 閱讀(309) 評論(0)  編輯  收藏 所屬分類: J2EE

    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類(16)

    隨筆檔案(16)

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产一级淫片免费播放电影| 亚洲人成无码久久电影网站| 亚洲爆乳AAA无码专区| 免费久久精品国产片香蕉| 99热在线日韩精品免费| 亚洲成a人片在线观| 四虎精品亚洲一区二区三区| 久久99免费视频| 亚洲精品av无码喷奶水糖心| 亚洲日本乱码在线观看| 免费A级毛片无码无遮挡内射| 未满十八私人高清免费影院| 亚洲视频一区在线| 亚洲国产精品尤物yw在线| 57pao一国产成永久免费| 精品国产亚洲第一区二区三区 | 国产免费资源高清小视频在线观看| GOGOGO免费观看国语| 亚洲自国产拍揄拍| 亚洲精品无码久久久久去q| 成人免费视频88| 久久青草精品38国产免费| 青草青草视频2免费观看| 亚洲国产综合在线| 亚洲日韩v无码中文字幕| 在线看片无码永久免费aⅴ| 91精品手机国产免费| www成人免费观看网站| 亚洲制服在线观看| 亚洲成AV人在线播放无码| 亚洲第一区精品观看| 噼里啪啦电影在线观看免费高清 | 亚洲人成网站观看在线播放| 99在线视频免费观看视频 | 最新亚洲人成无码网站| 亚洲国产电影在线观看| 国产AV无码专区亚洲AV男同| 亚洲av日韩片在线观看| 好男人www免费高清视频在线| 中文字幕免费视频| 无码精品一区二区三区免费视频 |