Java在JAXB解析之前无法解决XML / HTML问题

谁能帮我?

在HTML / XML中:
数字字符引用通过其通用字符集/ Unicode代码点引用字符,并使用以下格式:

&#NNNN;&#x hhhh;

在使用JAXB解析器之前,我必须将这些引用unescape(转换为unicode)。

当我使用Apache StringEscapeUtils.unescapeXml()时&>< 没有转义,而且这不是我想要的,因为解析将会失败。

有没有只将&#nnnn转换为unicode的库? 但是,其余的不会让其他人失望?

例:
开始标记 Adam<> Sl.meer 4&5�� 结束标记

我在&#后添加了空格,否则您没有看到符号。

现在我已经解决了这个问题,但我想使用更好的解决方案。

String unEncapedString = StringEscapeUtils.unescapeXml(xmlData).replaceAll("&", "&")
                .replaceAll("<>", "&lt;&gt;");
StringReader reader = new StringReader(unEncapedString.codePoints().filter(c -> isValidXMLChar(c))
                .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString());
return (Xxxx) createUnmarshaller().unmarshal(reader);


在Apache Commons文本库中查看并最终找到了解决方案:

NumericEntityUnescaper numericEntityUnescaper = new NumericEntityUnescaper(
                    NumericEntityUnescaper.OPTION.semiColonRequired);
xmlData = numericEntityUnescaper.translate(xmlData);
链接地址: http://www.djcxy.com/p/34917.html

上一篇: Java Unescaping XML/HTML before JAXB parsing doesn't work

下一篇: Getting SAXParser to ignore escape characters