2014-01-17 9 views
0

Я сделал приложение для Android для обработки XML-файлов с помощью XMLPullParser. Некоторые файлы XML не работают. Они были отформатированы для просмотра 80 столбцов. У них есть символы CRLF после каждых 80 символов. Некоторые символы CRLF находятся внутри TAG. Как я могу их фильтровать?CRLF внутри XML TAGs

+1

Тогда они недопустимы для XML. Исправьте исходные данные. Если есть что-то еще, ** покажите свой код ** и опишите свою * конкретную * проблему. –

+0

Предварительная обработка сломанного документа для удаления всех строк перевода строки? Это * делает риск изменения некоторых законных данных, так как newline является юридическим символом в текстовых блоках, но это единственное, что я могу думать о том, что это будет работать, чтобы удушить идиота, который сломал документы. – keshlam

+0

(Педантичный приговор: И проблема хуже, чем их недействительность - они даже не хорошо сформированы. Я знаю, вы имели в виду «действительный» разговорно, и это ... гм ... действительное использование Я просто отмечаю это, потому что читатели, скорее всего, столкнутся с этим различием позже.) – keshlam

ответ

0

Когда вы говорите, есть CRLF символы «внутри тегов», я предполагаю, что вы имеете в виду что-то вроде

<TIT 
LE>Introduction</T 
ITLE> 

Я спрашиваю, потому что, к сожалению, многие люди используют слово «тэг» неправильно означает весь элемент, и говорить о слове «Введение» - это если он находится внутри тега, что на самом деле не так.

Если у вас есть символы CRLF в тех местах, где XML их не разрешает, вам придется удалить их перед передачей данных в синтаксический анализатор XML. Это звучит не очень сложно. Если вы хотите сделать это на лету, вы можете написать реализацию InputStream, которая выполняет фильтрацию, и передать этот фильтрованный InputStream в синтаксический анализатор.

+0

Спасибо, Майкл. Да, ваш пример правильный. Это моя проблема. Я пробовал следующую реализацию InputStream: http://stackoverflow.com/questions/14752622/removing-newline-characters-from-inputstream/14754606#14754606 Я получаю ошибку stackoverflow при вызове метода super. Как это исправить? – user3050378

+0

Посмотрите на трассировку стека и посмотрите, где происходит бесконечный рекурсивный цикл, затем исправьте его. –