2013-04-15 1 views
2

Как я могу игнорировать пробелы при анализе XML-файла. Он всегда вызывает метод characters(...), а после конечного элемента - '\n' или '\r', поэтому он вызывает этот метод дважды, а не только один раз.Как игнорировать пробелы и новые строки при анализе XML-файла

+0

Большинство парсеров 'XML' обрабатывают это самостоятельно. Кстати, какой парсер вы используете? – kaysush

+0

Я использую этот парсер: javax.xml.parsers.SAXParser. Я знаю, что есть функция, называемая ignorableWhitespaces (...), но я не знаю, как использовать эту функцию, и я не знаю, что именно она делает. –

ответ

1

SAXParser, анализирующий документ против DTD-вызовов ignorableWhitespace(), когда он встречает пробелы в содержание элемента. Например, если XML-фрагмент

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

разбирается против этого фрагмента DTD:

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

SAXParser назвали бы characters(...) для "one" и "two" и ignorableWhitespace(...) для всех белого пространства между элементами.

Обратите внимание, что это относится только к разбору DTD. При использовании схемы ignorableWhitespace(...) не вызывается (хотя доступна такая же информация).

+0

Хорошо, спасибо, но это не решило мою проблему. Между моими элементами в данном XML-файле есть пробелы, например. .. .... (отмечены точками) и всегда символов() вызывается в этом случае. Решил его простым возвратом: if (content.length() == 0) return; // игнорировать пробелы –