2013-04-15 29 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; //忽略空格 –