JavaでXMLを解析します。
-
XMLファイル
<?xml version="1.0" encoding="UTF-8"?> <sample> <location> <area name="area1"> <shop type="kanto_shopName1" required="111" /> </area> <area name="area2"> <shop type="sikoku_shopName1" required="222" /> <shop type="sikoku_shopName2" required="333" /> </area> <area name = "area3"> <shop type="kansai_shopName1" required="444" /> <shop type="kansai_shopName2" required="555" /> <shop type="kansai_shopName3" required="666" /> </area> </location> </sample>
-
XMLファイル読取
/* * メイン処理を実行します。 * @param args 引数 */ public static void main(String[] args) { try { File fileObject = new File("src/conf/test.xml"); DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document document = docBuilder.parse(fileObject); NodeList nodeList = document.getChildNodes(); scanNodes(nodeList); System.out.println("マップサイズ:" + resultMap.size()); for (String key : resultMap.keySet()) { List<Z_XmlAnalyzerBean> list = resultMap.get(key); System.out.print("全体キーは" + key + "@"); for (int i=0; i<list.size(); i++) { Z_XmlAnalyzerBean bean = list.get(i); System.out.print(bean.getKey() + ":" + bean.getValue() + ", "); } System.out.println(""); } } catch (Exception e) { e.printStackTrace(); } }
-
XMLファイル解析
/* * ノードリストを再帰的に解析します。 * @param nodeList ノードリスト */ public static void scanNodes(NodeList nodeList) { for (int i=0; i<nodeList.getLength(); i++) { Node node = nodeList.item(i); if (Node.ELEMENT_NODE == node.getNodeType()) { NamedNodeMap nodeMap = node.getAttributes(); if (nodeMap != null) { for (int j=0; j<nodeMap.getLength(); j++) { if (nodeMap.item(j).getNodeName().equals("name")) { String mapKey = nodeMap.item(j).getNodeValue(); List<Z_XmlAnalyzerBean> list = new ArrayList<Z_XmlAnalyzerBean>(); resultMap.put(mapKey, list); } if (nodeMap.item(j).getNodeName().equals("type")) { String mapValueKey = nodeMap.item(j).getNodeName(); String mapValueValue = nodeMap.item(j).getNodeValue(); System.out.println(mapValueKey + ":" + mapValueValue); Node parentNode = node.getParentNode(); NamedNodeMap parentNodeMap = parentNode.getAttributes(); String parentZokuseiName = parentNodeMap.item(0).getNodeName(); String parentZokuseiValue = parentNodeMap.item(0).getNodeValue(); System.out.println("親:" + parentZokuseiName + "," + parentZokuseiValue); List<Z_XmlAnalyzerBean> list = resultMap.get(parentZokuseiValue); Z_XmlAnalyzerBean bean = new Z_XmlAnalyzerBean(); bean.setKey(mapValueKey); bean.setValue(mapValueValue); list.add(bean); } } } } if (node.hasChildNodes()) { scanNodes(node.getChildNodes()); } } }
-
XML要素格納Bean
public class Z_XmlAnalyzerBean { private String key = null; private String value = null; public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }