JavaでXMLをDOM操作するためには下記クラスを使用します。
javax.xml.parsers.DocumentBuilder
- XMLドキュメントからDOM Documentインスタンスを取得するAPI
javax.xml.parsers.DocumentBuilderFactory
- アプリケーションでXMLドキュメントからDOMオブジェクト・ツリーを生成するパーサーを取得できるファクトリAPI
XMLファイル
以下のXMLを読み込み、取得した要素をコンソールへ出力してます。
| 1 2 3 4 5 6 7 | <?xml version="1.0" encoding="UTF-8"?> <product name="商品" company="A社"> 	<goods name="時計" /> 	<goods name="スマホ" /> 	<goods name="パソコン" /> 	<goods name="エアコン" /> </product> | 
Java:DOMでXMLを読み込むサンプルコード
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import java.io.IOException; import java.util.Objects; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; 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 XmlParse { 	public static void main(String[] args) { 		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 		try { 			DocumentBuilder db = dbf.newDocumentBuilder(); 			Document doc = db.parse("./SampleXml.xml"); 			// ルート要素を取得 			Element root = doc.getDocumentElement(); 			// ルート要素の属性をコンソールへ表示 			System.out.println("種類:" + root.getAttribute("name")); 			System.out.println("会社名:" + root.getAttribute("company")); 			// ルート要素の子ノードを取得 			NodeList node = root.getChildNodes(); 			for(int i = 0; i < node.getLength(); i++) { 				Node childNode = node.item(i); 				if(childNode.getNodeType() == Node.ELEMENT_NODE) { 					Element child = (Element)childNode; 					if(Objects.equals(child.getNodeName(), "goods")) { 						// 子要素の属性をコンソールへ表示 						System.out.println("商品名:" + child.getAttribute("name")); 					} 				} 			} 		} catch (ParserConfigurationException | SAXException | IOException e) { 			e.printStackTrace(); 		} 	} } | 
コンソール(実行結果)
| 1 2 3 4 5 6 | 種類:商品 会社名:A社 商品名:時計 商品名:スマホ 商品名:パソコン 商品名:エアコン | 
