gpt4 book ai didi

java - simplexml android无法解析带有非结束元标记的html

转载 作者:行者123 更新时间:2023-12-01 10:02:17 26 4
gpt4 key购买 nike

我正在尝试在 android 中使用 simplexml 解析此 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!!!

我有一个 Doors 类,以及一个具有 id 和 status 属性的 Door 类。 (Doors 类有一个 List)

无论如何,似乎破坏的是标签的解析:

抛出的异常是:

expected: /meta read: head (position:END_TAG </head>@1:87 in java.io.StringReader@41ddc090)

我可以看到它期待一个结束元标记,但该标记不存在。这个标签对我来说没用,我怎样才能跳过它?我只关心门 ID/状态。

谢谢

此外,如果您关心这些类(class):

门.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();
}
}

门.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;
}
}

最佳答案

在将文档传递给解析器之前,您可以从文档中删除元标记甚至头标记。如果它存储在字符串中使用 this

关于java - simplexml android无法解析带有非结束元标记的html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com