<?xml version="1.0" encoding="utf-8"?>
<! DOCTYPE 車 SYSTEM "dtdFile.dtd">
<車>
<汽車 車牌="汽 A1234567">交通工具</汽車>
<驢車 車牌="驢 A7654321">農用車</驢車>
</車>
<!ELEMENT 車 (汽車*,驢車*)>
<!ELEMENT 汽車(#PCDATA)>
<!ATTLIST 汽車 車牌 CDATA #REQUIRED>
<!ELEMENT 驢車(#PCDATA)>
<!ATTLIST 驢車 車牌 CDATA #IMPLIED>
import javax.xml.parsers.*;
import org.xml.sax.helpers.*;
import org.xml.sax.*;
import java.io.*;
public class testone

{
public static void main(String args[])
{
try
{
SAXParserFactory factory=SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
SAXParser saxParser=factory.newSAXParser();
MyHandler handler=new MyHandler();
saxParser.parse(new File("car.xml"),handler);
}
catch(Exception e)
{System.out.println(e);}
}
}
class MyHandler extends DefaultHandler
{
public void startElement(String uri,String localName,String qName,Attributes atts)
{
System.out.print("<"+localName+">");
System.out.println("該標記的屬性:");
for(int k=0;k<atts.getLength();k++)
{
System.out.print("屬性名稱:");
System.out.print(atts.getLocalName(k)+" ");
System.out.print("屬性類型:");
System.out.print(atts.getType(k)+" ");
System.out.print("屬性的值:");
System.out.print(atts.getValue(k)+" ");
}
}
public void endElement(String uri,String localName,String qName)
{
System.out.println("<"+localName+">");
}
public void error(SAXParseException e)throws SAXException
{
String errorMessage=e.getMessage();
System.out.println("一般錯誤:"+errorMessage);
}
}錯誤信息是這樣的:
---------- Java編譯 ----------[此問題解決函數名大小寫搞錯了]
testone.java:13: 找不到符號
符號: 方法 newSaxParser()
位置: 類 javax.xml.parsers.SAXParserFactory
SAXParser saxParser=factory.newSaxParser();
^
1 錯誤
Output completed (5 sec consumed) - Normal Termination
----------------------------------------------------------------------------
符號指什么啊?
錯誤信息第二個:
---------- Java運行 ----------
org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
Output completed (3 sec consumed) - Normal Termination
---------------------------------------------------------------------------------------------------------------------
相關連接http://book.csdn.net/bookfiles/234/10023410858.shtml
使用瀏覽器檢查xml文件得到如下信息:
-----------------------------------------------
無法顯示 XML 頁。
使用 樣式表無法查看 XML 輸入。請更正錯誤然后單擊 刷新按鈕,或以后重試。
文本內容中發現無效字符。處理資源 'file:///E:/web/dtdFile.dtd' 時出錯。第 1 行,位置: 12
<!ELEMENT
------------------------------------------------------
---------- Java運行 ----------[現在的錯誤]
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
Output completed (0 sec consumed) - Normal Termination
^_^終于所有問題都解決了
最后一個問題是因為dtd文件沒有按utf-8編碼方式保存所導致的!
現在的運行結果:
---------- Java運行 ----------
<車>該標記的屬性:
<汽車>該標記的屬性:
屬性名稱:車牌 屬性類型:CDATA 屬性的值:汽 A1234567 <汽車>
<驢車>該標記的屬性:
屬性名稱:車牌 屬性類型:CDATA 屬性的值:驢 A7654321 <驢車>
<車>
Output completed (0 sec consumed) - Normal Termination

