2010-08-07 2 views
0

Я разбираю большой XML-документ с помощью парсинга pull (org.xmlpull.v1.XmlPullParser). Когда я добираюсь до определенного узла, я хочу его захватить, а все его дети - как часть текста (или просто дети тоже ОК) и сохранить как String. Что было бы эффективным способом достижения этого? Что-нибудь лучше (по существу) buffer.append('<').append(xpp.getName()).append('>')?Android XML - сохранение кусков текста во время разбора тяги

Вот пример

<root id="root"> 
    <node> 
     <grab-all-inside> 
      <!-- bunch of nodes, attributes etc. that needs to be saved as text --> 
     </grab-all-inside> 
    </node> 
    <node> 
     <grab-all-inside> 
      <!-- bunch of nodes, attributes etc. that needs to be saved as text --> 
     </grab-all-inside> 
    </node> 
    <node> 
     <grab-all-inside> 
      <!-- bunch of nodes, attributes etc. that needs to be saved as text --> 
     </grab-all-inside> 
    </node> 
</root> 

P.S. Если вы думаете, что мне лучше использовать какой-либо другой парсер или технику, я открыт для предложений. Так же, как примечание - эти текстовые фрагменты будут сериализованы в db с предположением, что в какой-то момент они будут извлечены и проанализированы.

ответ

1

Я подозреваю, что ваши звонки append() так же хороши, как и все. Это отдельные события в парсинге вытягивания.

Если это ресурс XML, попробуйте вместо этого использовать строковые ресурсы. Я знаю, что для Android 1.6+ они могут содержать легкую разметку HTML, и может быть, они могут содержать произвольную разметку, просто обрабатываемую как строку - не пробовали. Или создайте исходные ресурсы для содержимого каждого узла и прочитайте все это как строку.

+0

У меня есть поддержка 1.5 - это все равно около 12% трафика моего приложения в соответствии с Flurry. Я получаю фид как XML, синтаксический анализ является тривиальным, но довольно привлекательным. Я хочу получить ограниченное количество обновлений, и у меня возникает ощущение, что вместо обезьяны с сохранением связки объектов в кучу таблиц мне лучше сэкономить кусок текста в один столбец, а затем переупаковать его с использованием той же самой процедуры. Но это убивает меня, чтобы думать, что мне нужно перекомпилировать фрагмент XML из частей, когда он легко доступен. – Bostone

+0

Yep - закончил с использованием буферизации, спасибо Mark – Bostone

Смежные вопросы