2012-02-06 87 views
1

喜的朋友之间我买了很多内容的XML文件,我能够解析与拉解析的内容,但问题是有HTML链接在标签之间和在解析我只能在html链接后获得文本。链接前的文本丢失如何解析HTML标记XML中的Android

为前我有一个标签

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

在这里,我得到的输出链接后的文字,如何在走到这一步......在此先感谢

+0

正则表达式,子...的indexOf( “HREF”)......? – 2012-02-06 14:56:53

+2

如果您解析HTML(如“野生”遇到的)我建议你试着像JSoup - 人虐待HTML比红头继子女更多。 – Jens 2012-02-06 15:46:27

回答

0

的方式之一:

String a = "<table> this is my text before html <a href=\"http://stackoverflow.com/questions/9161924/how-to-parse-xml-with-html-tags-in-between-android\">link</a> this is my text after link. </table>"; 
String link = a.substring(a.indexOf("href=\"")+6,a.indexOf("\">")); 
System.out.println(link); 

希望它帮助。

+0

他不是通过正则表达式或查找来读取行。他使用XmlPullParser并且无法读取属性。 – Gangnus 2012-02-06 15:19:03

+0

我不太确定。我知道他有来自XML中已经检索到的文本的值。 – 2012-02-06 15:22:06

+0

我认为,如果他确实混合了find/regexp和xmlPullParsing,最好重写所有内容。 – Gangnus 2012-02-06 15:30:48

0

使用

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

采取属性。当然,你不能把它们当成文本或标签

0

为我工作,所以你必须表现出更多的东西 - 你正在使用解析XML,或者从原始的XML文档真正的片断代码,例如 - 为了让我们更有帮助。

在此期间,这里是一个快速演示/例子,我跑,看看事情如何工作的。我有一个固定的String的XML文档称为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 

正如你看到的,PA rser能够在链接之前和之后提取文本,尽管不是在单个操作中。