Как разобрать XML с тегами HTML между Android - PullRequest
1 голос
/ 06 февраля 2012

Привет, друзья! У меня есть XML-файл с большим количеством контента, и я могу анализировать контент с помощью разборки по запросу, но проблема в том, что между тегами есть html-ссылки, и при разборе я получаю текст только после html-ссылки.Текст перед ссылкой теряется

для ex у меня есть тег

 <table> this is my text before html <a href="i got a link here">link</a> this is my text after link. 
 </table>

здесь я получаю текст после ссылки в выводе, как это сделать ... спасибо заранее

Ответы [ 3 ]

0 голосов
/ 06 февраля 2012

Используйте

XmlPullParser parser =...;
...
parser.getAttributeValue(null, "href");

для получения атрибутов.Конечно, вы не можете воспринимать их как текст или тег

0 голосов
/ 06 февраля 2012

Работает для меня, поэтому вам нужно показать что-то большее - например, код, который вы используете для синтаксического анализа 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

Как видите, анализатор может извлекать текст до и после ссылки, хотя и не за одну операцию.

0 голосов
/ 06 февраля 2012

одним из способов:

String a = "<table> this is my text before html <a href=\"/6754558/kak-razobrat-xml-s-tegami-html-mezhdu-android\">link</a> this is my text after link.  </table>";
String link = a.substring(a.indexOf("href=\"")+6,a.indexOf("\">"));
System.out.println(link);

надеюсь, это поможет.

...