這兩個java類的作用是什麼?

linxuewei發表於2007-06-02



import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.XMLFilterImpl;
/*

派生 XML 過濾器的基類。

此模組(包括原始碼和文件)位於公共域中,對該模組不提供擔保。
有關更多資訊,請參閱http://www.saxproject.org。。
此類設計為位於 XMLReader 和客戶端應用程式的事件處理程式之間。
預設情況下,除了將請求傳遞給閱讀器和將事件傳遞給未修改的處理程式外,
]不執行其他操作。
但是,子類可以重寫特定方法在它們傳遞時修改事件流或配置請求。


*/
class XMLFilterBase extends XMLFilterImpl
{


public XMLFilterBase()
{
}


public XMLFilterBase(XMLReader parent)
{
super(parent);
}
/*
startElement
void startElement(String uri,
String localName,
String qName,
Attributes atts)
throws SAXException接收元素開始的通知。
解析器在 XML 文件中的每個元素的開始呼叫此方法;對於每個 startElement 事件都將有相應的 endElement 事件(即使該元素為空時)。所有元素的內容都將在相應的 endElement 事件之前順序地報告。

此事件允許每個元素最多有以下三個名稱元件:

名稱空間 URI;
本地名稱;和
限定(字首)名。
可以提供它們中的部分或全部,具體如何取決於 http://xml.org/sax/features/namespaces 和 http://xml.org/sax/features/namespace-prefixes 屬性的值:

當名稱空間屬性為 true(預設)時,名稱空間 URI 和本地名稱是必需項,當名稱空間屬性為 false 時,則為可選項(如果指定一個值,兩個都必須指定);
當名稱空間字首屬性為 true 時,限定名是必需項,當名稱空間字首屬性為 false(預設值)時,則為可選項。
注意,所提供的屬性列表僅包括具有顯式值(指定的或預設的)的屬性:將忽略 IMPLIED 屬性。僅在 http://xml.org/sax/features/namespace-prefixes 屬性為 true (預設情況下為 false,並且對 true 值的支援是可選項)時屬性列表才包括用於名稱空間宣告(xmlns* 屬性)的屬性。

與 characters() 一樣,屬性值可以具有需要不止一個 char 值的字元。


引數:
uri - 名稱空間 URI,如果元素沒有名稱空間 URI,或者未執行名稱空間處理,則為空字串
localName - 本地名稱(不帶字首),如果未執行名稱空間處理,則為空字串
qName - 限定名(帶有字首),如果限定名不可用,則為空字串
atts - 連線到元素上的屬性。如果沒有屬性,則它將是空 Attributes 物件。在 startElement 返回後,此物件的值是未定義的
丟擲:
SAXException - 任何 SAX 異常,可能包裝另外的異常
另請參見:
endElement(java.lang.String, java.lang.String, java.lang.String), Attributes, AttributesImpl

*/
//接收元素開始的通知

public void startElement (String uri, String localName) throws SAXException
{
startElement(uri, localName, "", EMPTY_ATTS);
}


public void startElement (String localName) throws SAXException
{
startElement("", localName, "", EMPTY_ATTS);
}

//接收元素結束的通知
public void endElement (String uri, String localName) throws SAXException
{
endElement(uri, localName, "");
}


public void endElement (String localName) throws SAXException
{
endElement("", localName, "");
}


public void emptyElement (String uri, String localName, String qName,
Attributes atts) throws SAXException
{
startElement(uri, localName, qName, atts);
endElement(uri, localName, qName);
}


public void emptyElement (String uri, String localName) throws SAXException
{
emptyElement(uri, localName, "", EMPTY_ATTS);
}

public void emptyElement (String localName) throws SAXException
{
emptyElement("", localName, "", EMPTY_ATTS);
}


public void dataElement (String uri, String localName, String qName,
Attributes atts, String content) throws SAXException
{
startElement(uri, localName, qName, atts);
characters(content);
endElement(uri, localName, qName);
}


public void dataElement (String uri, String localName, String content)
throws SAXException
{
dataElement(uri, localName, "", EMPTY_ATTS, content);
}


public void dataElement (String localName, String content)
throws SAXException
{
dataElement("", localName, "", EMPTY_ATTS, content);
}


public void characters (String data) throws SAXException
{
char ch[] = data.toCharArray();
characters(ch, 0, ch.length);
}

//關於 XML 屬性列表的介面
protected static final Attributes EMPTY_ATTS = new AttributesImpl();
}

相關文章