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

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

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

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    dom4j 學習

    Posted on 2007-11-06 15:24 G_G 閱讀(2095) 評論(3)  編輯  收藏 所屬分類: xml Related
    直接看代碼..
    dom4j 的一般使用都在里面了
    /lib/dom4j-1.6.1.jar
    /lib/jaxen-1.1-beta-6.jar
    package?useDom4j.test.supper;

    import?java.io.File;
    import?java.io.FileOutputStream;
    import?java.io.IOException;
    import?java.io.InputStream;
    import?java.io.OutputStream;
    import?java.net.URL;
    import?java.util.Iterator;
    import?java.util.List;
    import?java.util.regex.Matcher;
    import?java.util.regex.Pattern;

    import?javax.xml.parsers.DocumentBuilder;
    import?javax.xml.parsers.DocumentBuilderFactory;

    import?junit.framework.TestCase;

    import?org.dom4j.Document;
    import?org.dom4j.DocumentFactory;
    import?org.dom4j.DocumentHelper;
    import?org.dom4j.Element;
    import?org.dom4j.Node;
    import?org.dom4j.QName;
    import?org.dom4j.Visitor;
    import?org.dom4j.VisitorSupport;
    import?org.dom4j.XPath;
    import?org.dom4j.io.DOMReader;
    import?org.dom4j.io.HTMLWriter;
    import?org.dom4j.io.OutputFormat;
    import?org.dom4j.io.SAXReader;
    import?org.dom4j.io.XMLWriter;


    public?class?useDom4jTest?extends?TestCase?{

    ????
    //use?all
    ????private?String?path?;
    ????
    private?ClassLoader?clo;
    ????
    //?file?path?->?bin?
    ????private?String?classPath?;
    ????
    //use?save?
    ????static?private?Document?doc;
    ????
    private?String?filese;

    ????
    protected?void?setUp()?throws?Exception?{
    ????????
    super.setUp();
    ????????path?
    =?"useDom4j/test/config/test.xml";
    ????????clo?
    =?this.getClass().getClassLoader();
    ????????classPath?
    =?System.getProperty("java.class.path").split(";")[0]???;
    ????????filese?
    =?System.getProperty("file.separator");
    ????}

    ????
    protected?void?tearDown()?throws?Exception?{
    ????????
    super.tearDown();
    ????}

    ????
    ????
    public?void?testRead()throws?Exception{
    ????????SAXReader?sax?
    =?new?SAXReader();
    ????????
    //File?read
    ????????Document?docF?=??sax.read(
    ????????????????
    new?File(clo.getResource(path).getFile())
    ????????????????????);
    ????????assertNotNull(
    "is?File?saxReader?err",docF);
    ????????
    ????????
    //InPutStream?read?
    ????????Document?docI?=?sax.read(?clo.getResourceAsStream(path)?);
    ????????assertNotNull(
    "is?InPutStream?saxReader?err",docI);
    ????????
    ????????
    //URL?read?
    ????????Document?docU?=?sax.read(?clo.getResource(path)?);
    ????????assertNotNull(
    "is?Url?saxReader?err",docU);
    ????????
    ????}
    ????
    ????
    /**?converts?a?W3C?DOM?document?into?a?dom4j?document?*/
    ????
    public?void?testConversion()?throws?Exception{
    ??????????DocumentBuilderFactory?domfac
    =DocumentBuilderFactory.newInstance();
    ??????????DocumentBuilder?dombuilder
    =domfac.newDocumentBuilder();
    ??????????InputStream?input?
    =??clo.getResourceAsStream(path)?;
    ??????????org.w3c.dom.Document?doc3c?
    =?dombuilder.parse(?input?);
    ??????????DOMReader?xmlReader?
    =?new?DOMReader();
    ??????????assertEquals(?
    "?Conversion?:?W3C?DOM->?dom4j?DOM?err",
    ??????????????????xmlReader.read(doc3c)?
    instanceof?Document,true?);
    ??????}
    ??????
    ????
    public?void?testCreate()throws?Exception{
    ??????????DocumentFactory?factory?
    =?DocumentFactory.getInstance();
    ??????????doc?
    =?factory.createDocument();
    ????????
    //root?Create
    ??????????Element?root?=?doc.addElement("testElement");
    ??????????assertNotNull(
    "is?root?Create?err",root);
    ??????????
    ???????????Element?author2?
    =?root.addElement(?"author"?)
    ??????????????.addAttribute(?
    "name",?"Toby"?)
    ??????????????.addAttribute(?
    "location",?"Germany"?)
    ??????????????.addText(?
    "Tobias?Rademacher"?);

    ????????????Element?author1?
    =?root.addElement(?"author"?)
    ??????????????.addAttribute(?
    "name",?"James"?)
    ??????????????.addAttribute(?
    "location",?"UK"?)
    ??????????????.addText(?
    "James?Strachan"?);
    ????????????
    ????????????
    //Test?Create?
    ????????????
    //use?XPath?->jaxen-xxx.jar??
    ????????????assertEquals("create?Element?author2?err",
    ????????????????????doc.selectSingleNode(
    "/testElement/author[@name='Toby']").getText()
    ????????????????????,
    "Tobias?Rademacher");
    ????????????assertEquals(
    "create?Element?author1?err",
    ????????????????????doc.selectSingleNode(
    "/testElement/author[@location='UK']/@name").getText()
    ????????????????????,
    "James");
    ????}



    ?????
    public?void?testPrintingHTML()throws?Exception{
    ???????????String?testSaveXml?
    =?"useDom4j/test/config/testHtml.html";
    ???????????
    ???????????testSaveXml?
    =?classPath+filese+testSaveXml;
    ??????????
    ???????????File?file?
    =?getFile(testSaveXml);
    ???????????
    //Save?file.html?
    ???????????HTMLWriter?writer?=?new?HTMLWriter(new?FileOutputStream(?file?));
    ???????????writer.write(
    new?SAXReader().read(?clo.getResource(path)?));
    ???????????writer.flush();
    ?????}
    ????
    ????
    public?void?testIterator(){
    ????????Element?root?
    =?this.doc.getRootElement();
    ????????
    ????????
    //Iterator
    ????????Iterator?elementIterator?=?root.elementIterator();
    ????????
    while(elementIterator.hasNext()){
    ??????????Element?element?
    =?(Element)elementIterator.next();
    ??????????assertNotNull(
    "not?attr?name",?element.selectSingleNode("./@name")?);
    ??????????assertNotNull(
    "not?attr?location",?element.selectSingleNode("./@location")?);
    ??????????assertNotNull(
    "not?Text?",?element.selectSingleNode(".").getText()?);
    ????????}
    ????????
    ????????
    //for?->?./XX
    ????????for?(?int?i?=?0,?size?=?root.nodeCount();?i?<?size;?i++?)?{
    ????????????Node?node?
    =?root.node(i);
    ????????????
    if?(?node?instanceof?Element?)?{
    ??????????????Element?element?
    =?(Element)node;
    ??????????????assertNotNull(
    "not?attr?name",?element.selectSingleNode("./@name")?);
    ????????????????assertNotNull(
    "not?attr?location",?element.selectSingleNode("./@location")?);
    ????????????????assertNotNull(
    "not?Text?",?element.selectSingleNode(".").getText()?);
    ????????????}
    ????????}
    ????????
    ????????
    //List?
    ????????List?elements?=?root.elements();
    ????????
    int?size?=?elements.size()?;
    ????????
    if?(?size?>?4?)?{
    ??????????elements.subList(?
    3,?4?).clear();
    ??????????assertEquals(
    "List?is?not?clear",size-elements.size()==1,true);
    ????????}

    ????}
    ????
    ????
    /**?use?test.xml?test
    ?????????xpath?->?/project/organization/
    ?????????<organization>
    ?????????????<name>MetaStuff?Ltd.</name>
    ?????????????<url>
    http://sourceforge.net/projects/dom4j</url>
    ?????????????<logo>
    http://sourceforge.net/sflogo.php?group_id=16035</logo>
    ??????????</organization>?
    ??????????
    ??????????xpath?->?/project/dependencies/dependency[groupId='msv']
    ????????????<dependency>
    ??????????????<groupId>msv</groupId>
    ??????????????<artifactId>xsdlib</artifactId>
    ??????????????<version>20030807</version>
    ??????????????<url>
    https://msv.dev.java.net/</url>
    ????????????</dependency>
    ????
    */
    ????
    public?void?testXpath()throws?Exception{
    ????????XPath?xpathSelector?
    =?DocumentHelper.createXPath("/project/organization/*");
    ????????Document?docT?
    =?new?SAXReader().read(?clo.getResourceAsStream(path)?);
    ????????List?results?
    =?xpathSelector.selectNodes(docT);
    ????????
    for?(?Iterator?iter?=?results.iterator();?iter.hasNext();?)?{
    ??????????Element?element?
    =?(Element)?iter.next();
    ??????????
    if(element.getName().equals("name")){
    ??????????????assertEquals(
    "name?err",?element.getText().equals("MetaStuff?Ltd."),true);
    ??????????}
    ??????????
    if(element.getName().equals("url")){
    ??????????????assertEquals(
    "url?err",?element.getText().equals("http://sourceforge.net/projects/dom4j"),true);
    ??????????}
    ??????????
    if(element.getName().equals("logo")){
    ??????????????assertEquals(
    "logo?err",?element.getText().equals("http://sourceforge.net/sflogo.php?group_id=16035"),true);
    ??????????}
    ????????}
    ????????
    ????????
    //?select?
    ????????String?url?=?docT.valueOf(?"/project/dependencies/dependency[groupId='msv']/url"?);
    ????????assertEquals(
    "Url?err",?url.equals("https://msv.dev.java.net/"),true);
    ????????Number?count?
    =?docT.numberValueOf(?"/project/dependencies/dependency[groupId='msv']/version"?);
    ????????assertEquals(
    "Url?err",?count.intValue()==20030807,true);
    ????????
    ????}

    ????
    ????
    public?void?testVisitor(){
    ????????Visitor?visitor?
    =?new?VisitorSupport()?{
    ????????????
    public?void?visit(Element?element)?{
    ??????????????System.out.println(
    ????????????????
    "Entity?name:?"?+?element.getName()??+?"?text?:"?+?element.getText()
    ??????????????);
    ????????????}
    ??????????};

    ??????????doc.accept(?visitor?);
    ????}

    ????
    //??element.clone?;??element.createCopy?;???
    ????public?void?testInsertElementAt()?throws?Exception{
    ????????Element?root?
    =?this.doc.getRootElement();
    ????????Element?oldElement?
    =?(Element)doc.selectSingleNode("/testElement/author[@name='Toby']");
    ????????Element?newElement?
    =?(Element)?oldElement.clone();
    ????????List?list?
    =?root.content();
    ????????list.add(?root.indexOf(oldElement)
    +1,newElement?);

    ?????}
    ????
    ????
    ????
    ????
    ?????
    public?void?testSave()throws?Exception{
    ???????????String?testSaveXml?
    =?"useDom4j/test/config/testSave.xml";
    ???????????
    ???????????testSaveXml?
    =?classPath+filese+testSaveXml;
    ??????????
    ???????????File?file?
    =?getFile(testSaveXml);
    ???????????
    //Save?file.xml?
    ???????????XMLWriter?writer?=?new?XMLWriter(new?FileOutputStream(?file?));
    ???????????writer.write(doc);
    ???????????writer.flush();
    ?????}

    ?????
    ?????
    ????
    private?File?getFile(String?testSaveXml)?throws?IOException?{
    ????????File?file?
    =?null?;
    ???????????URL?url?
    =?clo.getResource(testSaveXml);
    ???????????
    if(url==null){
    ???????????????file?
    =?new?File(testSaveXml);
    ???????????????file.createNewFile();
    ???????????}
    else{
    ???????????????file?
    =?new?File(??url.getFile()?);
    ???????????}
    ????????
    return?file;
    ????}
    ????
    ????
    }

    引用:http://freezingxu.blog.com.cn/archives/2006/1892647.shtml
    /**
    ??*?對指定的節(jié)點增加屬性和文本
    ??*?
    @param?elmt
    ??*?
    @param?name
    ??*?
    @param?value
    ??*?
    @param?text
    ??*?
    @return
    ??
    */
    ?
    public?Element?addAttribute(Element?elmt,String?name,String?value){
    ??elmt.addAttribute(name,value);
    ??
    return?elmt;
    ?}
    ?
    ?
    /**
    ??*?修改指定節(jié)點的屬性和文本
    ??*?
    @param?elmt
    ??*?
    @param?name
    ??*?
    @param?value
    ??*?
    @param?text
    ??*?
    @return
    ??
    */
    ?
    public?Element?setAttribute(Element?elmt,String?name,String?value){
    ??Attribute?attribute?
    =?elmt.attribute(name);
    ??
    //attribute.setName(name);
    ??attribute.setValue(value);
    ??List?list?
    =?new?ArrayList();
    ??list.add(attribute);
    ??elmt.setAttributes(list);
    ??
    return?elmt;
    ?}
    ?
    ?
    /**
    ??*?刪除指定節(jié)點的指定屬性
    ??*?
    @param?elmt
    ??*?
    @param?name
    ??*?
    @return
    ??
    */
    ?
    public?Element?removeAttribute(Element?elmt,String?name){
    ??elmt.remove(elmt.attribute(name));
    ??
    return?elmt;
    ?}
    ?
    ?
    /**
    ??*?輸出為文件
    ??*?
    @param?doc
    ??*?
    @throws?IOException
    ??
    */
    ?
    public?void?writeFile(Document?doc)?throws?IOException{
    ??FileWriter?out?
    =?new?FileWriter(?"d:/newQuery.xml"?);
    ??doc.write(out);
    ??out.flush();
    ??out.close();
    ?}


    評論

    # re: dom4j 學習  回復  更多評論   

    2007-11-06 17:44 by li
    基本的IO操作都有了,還不錯

    # re: dom4j 學習  回復  更多評論   

    2007-11-06 17:59 by G_G
    謝謝

    # re: dom4j 學習  回復  更多評論   

    2007-11-07 10:29 by dom
    各位好!?
    有沒有關于dom4j的詳細一點資料? 謝謝.

    # re: dom4j 學習  回復  更多評論   

    2007-11-08 23:17 by 姜利陽
    與Jdom的操作方式很相似

    Document
    Element
    Attribute

    SAX方式的讀操作
    Dom方式的寫操作

    # re: dom4j 學習  回復  更多評論   

    2007-11-09 17:13 by G_G
    @姜利陽
    都是 jdk中xml的包裝類 dom4j 和 jdom (我jdom沒太看呵呵)

    # re: dom4j 學習  回復  更多評論   

    2007-11-09 21:24 by 姜利陽
    其實只要用熟了一個, 然后看其他的,原理和思路都很相似
    主站蜘蛛池模板: 免费国产小视频在线观看| 日批日出水久久亚洲精品tv| 亚洲成A人片在线播放器| 成年女人永久免费观看片| 国产一级a毛一级a看免费人娇| 91亚洲va在线天线va天堂va国产 | 久久99热精品免费观看动漫| 久久国产亚洲精品无码| 在线观看亚洲免费| 久久精品免费观看| 亚洲精品无播放器在线播放| 不卡一卡二卡三亚洲| 最近最新MV在线观看免费高清| 一级毛片一级毛片免费毛片| 亚洲第一香蕉视频| 中文字幕亚洲无线码| 蜜臀91精品国产免费观看| 免费观看男人吊女人视频| 亚洲aⅴ无码专区在线观看| 亚洲宅男永久在线| 免费国产在线观看老王影院| 亚洲网站在线免费观看| 国产精品视频全国免费观看 | 九九九精品视频免费| 亚洲人成电影院在线观看| 亚洲色自偷自拍另类小说| 成人性生交大片免费看午夜a| 久久青青草原国产精品免费| 国产AV日韩A∨亚洲AV电影| 亚洲国产韩国一区二区| 国产AV无码专区亚洲A∨毛片| 四虎免费久久影院| 好男人www免费高清视频在线| 成人爽a毛片免费| 四虎影视在线看免费观看| 亚洲日本在线电影| 亚洲天堂电影在线观看| 亚洲国产精品久久66| 三上悠亚亚洲一区高清| 亚洲国产精品尤物YW在线观看| 午夜时刻免费入口|