[Java8]xmlファイルから要素名を指定して値を取得する方法

環境
JavaSE 1.8
Eclipse 4.14.0

構文
1.newInstance()
DocumentBuilderFactoryの新しいインスタンスを取得します。
このstaticメソッドは新しいファクトリ・インスタンスを作成します。
2.newDocumentBuilder()
現在構成されているパラメータを使用してDocumentBuilderの新しいインスタンスを作成します。

3.getElementsByTagName(String tagname)
文書内の、特定のタグ名を持つすべてのElementsを文書の順に格納するNodeListを返します。
パラメータ:
tagname – 一致するタグの名前。特殊な値「*」はすべてのタグに一致する。
XMLの場合、tagnameパラメータでは大文字と小文字が区別される。

使用例
1.test.xml

<?xml version="1.0" encoding="UTF-8" ?>
<person>
      <User>
            <name>
                  <city> 東京</city>
                  <city> 大阪</city>
                  <city> 福岡</city>
            </name>
      </User>
</person>

2.Java側のプログラム

package com.arkgame.study;

import java.io.FileInputStream;

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

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XmlGet {

      private static final String xmlFile = "C:\\study\\arkgame\\test.xml";

      public static void main(String[] args) throws Exception {
            // DOMの変数宣言
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            
            // XML文書を読み込む
            Document doc = db.parse(new FileInputStream(xmlFile));
            
            // 要素をノードリストとして取り出す
            NodeList nodeLst = doc.getElementsByTagName("city");

            for (int i = 0; i < nodeLst.getLength(); i++) {
                  Node count = nodeLst.item(i);
                  for (Node ele = count.getFirstChild(); ele != null; ele = ele.getNextSibling()) {
                        System.out.println("city要素" + (i+1) + " 値:" + ele.getNodeValue());
                  }
            }
      }
}

実行結果

city要素1 値: 東京
city要素2 値: 大阪
city要素3 値: 福岡

 

Java

Posted by arkgame