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

Close an open XML element tag, programmatically in java

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

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

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

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

首先,我认为您不应该使用无效 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 元素将被忽略。