在java中以编程方式关闭一个打开的XML元素标记

时间:2017-09-14 05:54:07

标签: java xml parsing saxparser

我有一个XML字符串作为来自服务器的响应,带有一些开放标记,例如: 例如:

<Address1><Street>This caused error coz street is not closed</Address1>
<Address2>This displayed normal</Address2>

当我解析上面的xml字符串时,我得到了, org.xml.sax.SAXParseException: 必须收集元素类型“Street”。

注意:我无法更改服务器文件。

1 个答案:

答案 0 :(得分:1)

首先,我认为您不应该使用无效的XML,因为它会导致不可预测的结果。最适合您的是更新服务器文件以获得有效的XML内容。

话虽如此,您可以使用Jsoup这是一个HTML解析器,可以帮助管理这种无效的XML。

对于您提供的示例:

String xml = "<Address1><Street>This caused error coz street is not closed</Address1><Address2>This displayed normal</Address2>";
Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
Elements elements = doc.getElementsByTag("Address1");
System.out.println(elements.first().text());
// it will print: "This caused error coz street is not closed"
Elements elements2 = doc.getElementsByTag("Address2");
System.out.println(elements2.first().text());
// it will print: "This displayed normal"

Street元素将被忽略。