我弄個詢問功能且會顯示出來,如下所示:
C:\JAVA_WORK>javac ReadXMLFile.java
C:\JAVA_WORK>java ReadXMLFile
輸入分類號:0299
年度號 : 0085
分類號 : 0299
案次號 : 001
年度號 : 0085
分類號 : 0299
案次號 : 002
年度號 : 0089
分類號 : 0299
案次號 : 001
C:\JAVA_WORK>
目前的錯誤訊息如下:
C:\JAVA_WORK>java ReadXMLFile
輸入分類號:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at ReadXMLFile.main(ReadXMLFile.java:20)
C:\JAVA_WORK>
我想設一個[try-catch]機制"找不到的情況",如下所示?
當我輸入一個不存在或沒有該屬於分類號就會印出"查無此分類號!請重新輸入..."。
C:\JAVA_WORK>javac ReadXMLFile.java
C:\JAVA_WORK>java ReadXMLFile
輸入分類號:0419
查無此分類號!請重新輸入...
C:\JAVA_WORK>
懇請指點一下<(_ _)>
程式碼如下:
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class SearchFile {
public static void main(String[] args) throws IOException {
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File("C:\\JAVA_WORK\\test1.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("輸入分類號:");
String s = br.readLine();
int num = Integer.parseInt(s);
try {
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren("ROW");
for (int i = 0; i < list.size(); i++)
{
Element node = (Element) list.get(i);
if (node.getChildText("分類號").equals(""+s))
{
System.out.println("年度號 : " + node.getChildText("年度號"));
System.out.println("分類號 : " + node.getChildText("分類號"));
System.out.println("案次號 : " + node.getChildText("案次號"));
Scanner input = new Scanner(System.in);
input.hasNextLine();
}
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
}
}
xml格式如下:
<?xml version = '1.0' encoding = 'Big5'?>
<!DOCTYPE ROWSET [
<!ELEMENT ROWSET (ROW)*>
<!ELEMENT ROW (年度號, 案名?, 分類號, 案次號 )>
<!ATTLIST ROW num CDATA #REQUIRED>
<!ATTLIST 電子檔案名稱 num CDATA #REQUIRED>
<!ATTLIST 附件名稱 num CDATA #REQUIRED>
<!ATTLIST 附件媒體型式 num CDATA #REQUIRED>
<!ATTLIST 附件數量 num CDATA #REQUIRED>
<!ATTLIST 附件單位 num CDATA #REQUIRED>
<!ATTLIST 主題 num CDATA #REQUIRED>
<!ATTLIST 附註 num CDATA #REQUIRED>
<!ELEMENT 案名 (#PCDATA)>
<!ELEMENT 年度號 (#PCDATA)>
<!ELEMENT 分類號 (#PCDATA)>
<!ELEMENT 案次號 (#PCDATA)>
]>
<ROWSET>
<ROW num="1">
年度號 : 0072
分類號 : 200
案次號 : 001
</ROW>
<ROW num="2">
年度號 : 0070
分類號 : 200
案次號 : 002
</ROW>
<ROW num="3">
年度號 : 0076
分類號 : 011
案次號 : 004
</ROW>
<ROW num="4">
年度號 : 0091
分類號 : 011
案次號 : 001
</ROW>
<ROW num="5">
年度號 : 0086
分類號 : 0102
案次號 : 053
</ROW>
<ROW num="6">
年度號 : 0081
分類號 : 012
案次號 : 023
</ROW>
<ROW num="7">
年度號 : 0071
分類號 : 112
案次號 : 013
</ROW>
</ROWSET>