すべてのリンクとタイトルを同時に配列リストに読みたいですか?Javaのすべての子要素がXMLで読み取る
<rootNode>
<image>
<link>http://imagelink/</link>
<title>This is the title</title>
</image>
<movie>
<link>http://movielink/</link>
<title>This is the title</title>
</movie>
</rootNode>
以下のコードはうまく動作しますが、異なる子ノードがあるとコードが大きくなりすぎる可能性があります。
私は複数を望みません、私はきれいに見えるものが欲しいです!
ArrayList XTimeStamp = new ArrayList();
Node libraryTagNode, libraryDataNode;
Element libraryTagElement, libraryDataElement;
NodeList libraryTagList,libraryDataList;
try {
File file = new File("computer.txt");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList imageLst = doc.getElementsByTagName("image");
NodeList movieLst = doc.getElementsByTagName("movie");
for (int s = 0; s < imageLst.getLength(); s++) {
libraryTagNode=bookLst.item(s);
if (libraryTagNode.getNodeType() == Node.ELEMENT_NODE) {
libraryTagElement = (Element) libraryTagNode;
libraryTagList = libraryTagElement.getElementsByTagName("link");
libraryDataElement = (Element) libraryTagList.item(0);
libraryDataList = libraryDataElement.getChildNodes();
String timeStampX=libraryDataList.item(0).getNodeValue();
libraryTagList = libraryTagElement.getElementsByTagName("title");
libraryDataElement = (Element) libraryTagList.item(0);
libraryDataList = libraryDataElement.getChildNodes();
String timeStampY=libraryDataList.item(0).getNodeValue();
XTimeStamp.add(timeStampX+" "+timeStampY);
}
}
for (int s = 0; s < movieLst.getLength(); s++) {
libraryTagNode=bookLst.item(s);
if (libraryTagNode.getNodeType() == Node.ELEMENT_NODE) {
libraryTagElement = (Element) libraryTagNode;
libraryTagList = libraryTagElement.getElementsByTagName("link");
libraryDataElement = (Element) libraryTagList.item(0);
libraryDataList = libraryDataElement.getChildNodes();
String timeStampX=libraryDataList.item(0).getNodeValue();
libraryTagList = libraryTagElement.getElementsByTagName("title");
libraryDataElement = (Element) libraryTagList.item(0);
libraryDataList = libraryDataElement.getChildNodes();
String timeStampY=libraryDataList.item(0).getNodeValue();
XTimeStamp.add(timeStampX+" "+timeStampY);
}
}
あなたの質問は不明です。ノードを訪問する順序を示すために編集してください。 –
XPathの使用に切り替えることはできますか? –