Japanese / English
dom4jでxmlを読み込む
dom4jでxmlを読み込むには、SAXReader#readメソッドでxmlファイルを読み込みます。
戻り値はDocumentクラスです。このクラスでxmlファイルを操作することが可能です。

selectNodesとelementIterator
Document#selectNodesメソッドでxmlのノードを取得できます。以下のようなxmlファイルがあるとします。

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<!--An XML Catalog-->
<?target instruction?>
  <journal title="XML Zone"
                  publisher="IBM developerWorks">

<article level="Intermediate" date="December-2001">
 <title>Java configuration with XML Schema</title>
 <author>
     <firstname>Marcello</firstname>
     <lastname>Vitaletti</lastname>
 </author>
  </article>
  </journal>
</catalog>
articleというノードのlevel属性を取得したい場合はselectNodes("//article/@level")とします。
titleタグで囲まれた値を取得したい場合はElement#elementIterator("title")とします。

サンプル
package jp.co.confrage;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test005 {

    public static void main(String[] args) {
        SAXReader saxReader = new SAXReader();
        try {
            Document document = saxReader.read(new File("C:\\a001.xml"));
            List list = document.selectNodes("//article/@level");
            Iterator iter=list.iterator();
            while(iter.hasNext()){
                Attribute attribute=(Attribute)iter.next();
                if(attribute.getValue().equals("Intermediate")){
                    attribute.setValue("test"); // testに書き換える
                }
            }

            list.clear();
            list = document.selectNodes("//article/author");
            Iterator iter2=list.iterator();
            while(iter2.hasNext()){
                Element element=(Element)iter2.next();
                Iterator iterator=element.elementIterator("firstname");
                while(iterator.hasNext()){
                    Element firstNameElement=(Element)iterator.next();
                    if(firstNameElement.getText().equals("Marcello")){
                        System.out.println(firstNameElement.getText());
                        firstNameElement.setText("test"); //testに書き換える
                    }
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

Back to top

Information
Information
社長ブログ


運営サイト




広告



Google Search
PV
SEO対策 大阪  税理士 相談  税理士 守口市  税理士 大阪市  税理士 枚方市  自動車ガラス 神戸  シール印刷 神戸  ブリリアントアパートメント  株式会社CONFRAGE  英会話 個人レッスン 京都市右京区  京都市右京区西京区でマンツーマン英会話 
このページはCONFRAGEの著作物です。このページを複製・転載することを禁じます。CopyRight(C)2003-2016 CONFRAGE All rights reserved.