simplexml android 无法使用非闭合元标记解析 html
simplexml android Can't parse html with non-closing meta tag
我正在尝试使用 android 中的简单 xml 解析此 xml 字符串:
"<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!!!
我有一个门 class,还有一个具有属性 id 和状态的门 class。 (门 class 有一个列表)
不管怎么说,似乎是破坏了标签的解析:
抛出的异常是:
expected: /meta read: head (position:END_TAG </head>@1:87 in java.io.StringReader@41ddc090)
我可以看到它需要一个不存在的结束元标记。这个标签对我没用,我怎么能跳过它呢?我只关心门ids/statuses.
谢谢
此外,如果您关心 classes:
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;
}
}
您可以在将文档传递给解析器之前从文档中删除 meta 标记甚至 head 标记。
如果它存储在一个字符串中使用 this
我正在尝试使用 android 中的简单 xml 解析此 xml 字符串:
"<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!!!
我有一个门 class,还有一个具有属性 id 和状态的门 class。 (门 class 有一个列表)
不管怎么说,似乎是破坏了标签的解析:
抛出的异常是:
expected: /meta read: head (position:END_TAG </head>@1:87 in java.io.StringReader@41ddc090)
我可以看到它需要一个不存在的结束元标记。这个标签对我没用,我怎么能跳过它呢?我只关心门ids/statuses.
谢谢
此外,如果您关心 classes:
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;
}
}
您可以在将文档传递给解析器之前从文档中删除 meta 标记甚至 head 标记。 如果它存储在一个字符串中使用 this