[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 値: 福岡