Работает для меня, поэтому вам нужно показать что-то большее - например, код, который вы используете для синтаксического анализа XML, или настоящий фрагмент из исходного документа XML - чтобы мы могли быть более полезными.
А пока приведу небольшую демонстрацию / пример, который я запускаю, чтобы посмотреть, как все работает. У меня есть XML-документ в фиксированной String
с именем DOCUMENT
, который содержит следующее:
<root>
<element>
<table>text before <a href="url">link</a> text after</table>
</element>
<element>
free text
</element>
</root>
Очень простой цикл отвечает за анализ этого документа и отображение в журнале текста, который анализатор может извлечь для каждого элемента:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(DOCUMENT));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
Log.d("XmlDemo", "Start document");
} else if (eventType == XmlPullParser.START_TAG) {
Log.d("XmlDemo", "Start tag: " + xpp.getName());
} else if (eventType == XmlPullParser.END_TAG) {
Log.d("XmlDemo", "End tag: " + xpp.getName());
} else if (eventType == XmlPullParser.TEXT) {
Log.d("XmlDemo", "Text: " + xpp.getText());
}
eventType = xpp.next();
}
Log.d("XmlDemo", "End document");
Затем, во время прогона, журнал показывает (среди прочего) следующие записи:
02-06 15:45:38.981: D/XmlDemo(371): Start tag: table
02-06 15:45:39.001: D/XmlDemo(371): Text: text before
02-06 15:45:39.001: D/XmlDemo(371): Start tag: a
02-06 15:45:39.021: D/XmlDemo(371): Text: link
02-06 15:45:39.021: D/XmlDemo(371): End tag: a
02-06 15:45:39.041: D/XmlDemo(371): Text: text after
02-06 15:45:39.041: D/XmlDemo(371): End tag: table
Как видите, анализатор может извлекать текст до и после ссылки, хотя и не за одну операцию.