解析带DTD文档的XML文件时出错
我的DTD文档如下:
<!ELEMENT students (student+)>
<!ELEMENT student (Name,Department,Class,Course+)>
<!ATTLIST student ID CDATA #REQUIRED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Department (#PCDATA)>
<!ELEMENT Class (#PCDATA)>
<!ELEMENT Course (CName,ExamDate,Teacher,CMark,CTime,CType,Score)>
<!ELEMENT CName (#PCDATA)>
<!ELEMENT ExamDate (#PCDATA)>
<!ELEMENT Teacher (#PCDATA)>
<!ELEMENT CMark (#PCDATA)>
<!ELEMENT CTime (#PCDATA)>
<!ELEMENT CType (#PCDATA)>
<!ELEMENT Score (#PCDATA)>
在eclipse里可以生成对应的xml文件:
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<!DOCTYPE students SYSTEM "student.dtd">
<students>
<student ID="103220533">
<Name>学生1</Name>
<Department>计算机系</Department>
<Class>网通班</Class>
<Course>
<CName>Java</CName>
<ExamDate>2006-12-29</ExamDate>
<Teacher>龚根华</Teacher>
<CMark>6</CMark>
<CTime>96</CTime>
<CType>主修</CType>
<Score>88</Score>
</Course>
</student>
</students>
然后我再用DOM对该xml文件进行解析:
DocumentBuilderFactory domfac;
DocumentBuilder docBuilder;
Document doc;
InputStream in;
Element root;
NodeList students;
domfac = DocumentBuilderFactory.newInstance();
try{
docBuilder = domfac.newDocumentBuilder();
in = new FileInputStream("student.xml");
doc = docBuilder.parse(in);
root = doc.getDocumentElement();
students = root.getChildNodes();
............
}catch(ParserConfigurationException e){
e.printStackTrace();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(SAXException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
............
调试时出现如下错误:
org.xml.sax.SAXParseException: Relative URI "student.dtd"; can not be resolved without a base URI.
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3182)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3176)
at org.apache.crimson.parser.Parser2.resolveURI(Parser2.java:2758)
at org.apache.crimson.parser.Parser2.maybeExternalID(Parser2.java:2730)
at org.apache.crimson.parser.Parser2.maybeDoctypeDecl(Parser2.java:1129)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:489)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:185)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:98)
at lin.xml.OperateXML.<init>(OperateXML.java:37)
at lin.xml.OperateXML.main(OperateXML.java:71)
Exception in thread "main" java.lang.NullPointerException
at lin.xml.OperateXML.getDate(OperateXML.java:53)
at lin.xml.OperateXML.main(OperateXML.java:72)
急呀~~~在线等,谢谢高手指点.真的不知道怎么解决此问题.
快~~!!!