1. ホーム
  2. Java

XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。

2022-01-23 23:28:22


午後からStatus2の設定を行うと、java.util.NoSuchElementExceptionがスローされ、結果が暴走します。次のコードは、デモのためのものです。

Exception in thread "main" java.util.NoSuchElementException
	at java.util.ArrayList$Itr.next(ArrayList.java:794)
	at name.hzy.test.XmlUtil.main(XmlUtil.java:27)



JAVAコードは以下の通りです。

public static void main(String[] args) {
		File file = new File("X:\\aa.xml");
		Document doc;
		Element foo;
		try {
			doc = new SAXReader().read(file);
			Element root = doc.getRootElement();
			Iterator<Element> iterator = root.elementIterator("VALUE");
			while (iterator.hasNext()) {
				foo = iterator.next();   
				String name = foo.attributeValue("name");
				Iterator<Element> it = foo.elementIterator("NO");
				while (it.hasNext()) {
					System.out.println("The license plate number is:"+it.next().getText()); <----this sentence is wrong,,, how CSDN does not give red.
				}
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}



XMLファイルは以下の通りです。

<?xml version="1.0" encoding="GB2312"? > 
<RESULT>   
	<VALUE name="one">     
		<NO name="1">A1234</NO>  
		<NO name="2">A1234B</NO>    
	</VALUE>    
	<VALUE name="two">     
		<NO>B1234</NO>
	</VALUE>  
</RESULT>   



コードの確認を待ち、ググる。やっと何が悪いかわかった、赤背景のコードが間違ってたので変更した。

while (it.hasNext()) {
		Element e = it.next();
		System.out.println("The license plate number is:"+e.getText());
	}

違いを見てください。しかし、なぜそのように書かれているのかがわからない。私の理屈では、上のような書き方でも問題ないと思うので、APIをよく見る必要がありそうです。

最後になりますが、XMLの操作にはDOM4Jを使用しています。