我試圖將當前文檔位置存儲在堆棧中,推送startElement,彈出endElement。現在,我使用:Java SAX解析器,存儲屬性
public void startElement(String namespaceURI, String elname,
String qName, Attributes atts) throws SAXException {
original.append(innerText);
original.append("<");
original.append(elname);
original.append(">");
docStack.push(new StackElement(elname,atts));
....
不幸的是當它試圖在以後閱讀的ATT,它提供了錯誤: 致:java.lang.IllegalStateException:屬性只能的startElement的範圍內使用() 。
是否有任何快速可靠的方法來存儲屬性? 另外,是否有更好的方法來做到這一點比爲每個開始標記構造一個新的自定義對象StackElement?
偉大的思想認爲一樣:) – Bohemian 2011-06-13 23:20:36
似乎會有點慢,用每個startElement構造對象,但即使有這個開銷,它仍然應該比DOM更有效率,是正確的嗎? – NoBugs 2011-06-14 00:46:27
它肯定會比DOM更高效,因爲你不會存儲所有東西,只是一些東西。我認爲你對對象創建的擔憂是沒有根據的,因爲Java並不是一種緩慢而笨拙的語言。無論如何,解析完內存和對象都會被清理乾淨。 – 2011-06-14 01:01:05