2012-02-06 69 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能夠在鏈接之前和之後提取文本,儘管不是在單個操作中。