ずっとJavaでXMLを読み込んでノードの変更とかしたかったけど、DOMの操作に苦戦しまくって3時間。他の勉強が全然出来なかった。。
package test; import java.io.IOException; import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; import com.sun.org.apache.xml.internal.serialize.DOMSerializer; public class ParseXML { public static void main(String[] args) { parseXml(); } public static void parseXml() { Document doc = null; String docNS = "http://www.oreilly.com/javaxml2"; String xmlFile = "C:\\temp\\test.xml"; try { DOMParser parser = new DOMParser(); parser.parse(xmlFile); doc = parser.getDocument(); Element root = doc.getDocumentElement(); NodeList idElements = root.getElementsByTagName("id"); Element idElement = (Element) idElements.item(0); Text idText = (Text)idElement.getFirstChild(); //最初のidのテキストが表示される→id System.out.println(idText.getTextContent()); System.out.println("------------------------"); //今度は上から順番にidの要素を表示してみる。 for (int i = 0; i < idElements.getLength(); i++) { Element idElement2 = (Element) idElements.item(i); Text idText2 = (Text)idElement2.getFirstChild(); Text textText2 = (Text)idElement2.getNextSibling(); System.out.println(idText2.getTextContent()); } System.out.println("---------------------------"); //今度はバージョン情報を出力してみる NodeList versionElements = root.getElementsByTagName("version"); Element versionElement = (Element) versionElements.item(0); Text versionText = (Text) versionElement.getFirstChild(); System.out.println(versionText.getTextContent()); System.out.println("-----------------------------"); } catch(SAXException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } }
読み込んだXML
<?xml version="1.0" encoding="Shift_JIS"?> <project> <dependencies> <dependency> <id>ant</id> <version>1.5</version> </dependency> <dependency> <id>junit</id> <version>3.8.1</version> </dependency> <dependency> <id>ejb</id> <version>2.1</version> </dependency> </dependencies> </project>
XMLから勉強し直そうと思う。全然ダメだ。
また明日。