2016-04-18 52 views
0

我試圖解析在Android中使用SimpleXML此XML字符串:simplexml的機器人不能與解析HTML非關閉meta標籤

"<html> 
<head> 
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"> 
</head> 
<body> 
<doors> 
<door id=\"1\" status=\"Closed\"> 
<door id=\"2\" status=\"Closed\"> 
<door id=\"3\" status=\"Closed\"> 
<door id=\"4\" status=\"Open\"> 
</door> 
</door> 
</door> 
</door> 
</doors> 
</body> 
</html>" 

是的,我知道這門標記應立即關閉,而不是之後所有的門標籤已被宣佈,我無法控制這個HTML!

我有一個門類和一個帶有屬性ID和狀態的Door類。 (大門類有一個列表)

總之,似乎是破是標籤的解析:

拋出的異常是:

expected: /meta read: head (position:END_TAG </head>@1:87 in [email protected]) 

我可以看到,它被期待關閉元標記,它不存在。這個標籤對我來說沒用,我怎麼跳過它?我只關心門ids /狀態。

感謝

此外,如果你關心的類:

Doors.java

@Root(name="doors", strict=false) 
public class Doors { 
@ElementList(name="door") 
private List<Door> doorList; 

public Doors(){}; 

public List<Door> getDoors(){ 
    return doorList; 
} 

public int getNumDoors(){ 
    return doorList==null ? 0 : doorList.size(); 
} 
} 

Door.java

@Root(name="door") 
public class Door { 
@Attribute 
private String id; 
@Attribute 
private String status; 

public String getID(){ 
    return id; 
} 
public String getStatus(){ 
    return status; 
} 
} 

回答

1

您可以刪除元標記或甚至在將文檔傳遞給解析器之前從文檔中獲取頭標記。 如果它存儲在一個字符串中使用this

+0

謝謝,我只需要這樣做。我希望能夠完全遍歷標籤,但由於它是硬編碼的並且不會改變,所以String.replace會很好。 –