2013-04-15 30 views
2

如何在解析XML文件時忽略空格。它總是再次調用characters(...)方法,而在結束元素後面跟着一個'\n''\r',因此它調用此方法兩次,而不是一次。如何在解析XML文件時忽略空格和新換行

+0

大多數'XML'解析器都是自己處理這個問題的。順便說一句你正在使用哪個解析器? – kaysush

+0

我使用這個解析器:javax.xml.parsers.SAXParser。我知道有一個名爲ignorableWhitespaces(...)的函數,但我不知道如何使用這個函數,我不知道它到底是什麼。 –

回答

1

正在解析DTD文檔的SAXParser在元素內容遇到空格時調用ignorableWhitespace()。例如,如果該XML片段

<ol> 
    <li>one</li> 
    <li>two</li> 
</ol> 

解析反對這種DTD片段:

<!ELEMENT ol (li+)> 
<!ELEMENT li (#PCDATA)> 

的SAXParser的會叫characters(...)"one""two",並ignorableWhitespace(...)的元素之間的所有空格。

還要注意,這僅適用於針對DTD的解析。在使用Schema時,不會調用ignorableWhitespace(...)(即使有相同類型的信息可用)。

+0

好的,謝謝,但這並沒有解決我的問題。在給定XML文件中的我的元素之間是空格,例如 .. .... (標有圓點)和總是字符()被調用在這種情況下。用一個簡單的返回來解決它: if(content.length()== 0) return; //忽略空格 –