用Java解析HTML数据,包括<和>标签?

时间:2012-12-17 12:15:45

标签: java html-parsing htmleditorkit

我想用Java解析HTML文本。

我尝试使用 javax.swing.text.html.HTMLEditorKit 解析HTML数据。它帮助我从HTML获取数据。但我有一个HTML数据,如 -

<span class="TitleServiceChange" >Service Change</span>
                    <span class="DateStyle">
                     Posted: 12/16/2012  8:00PM
                    </span><br/><br/>
                  <P>

周围的'& lt''& gt'而不是'<''> “

在解析上述文本时,我收到错误 -

Parsing error: start.missing body ? ? at

请建议我解决我的问题。 提前谢谢。

3 个答案:

答案 0 :(得分:5)

为了取消包含在字符串中的完整转义字符集,您可以使用Apache Commons Lang实用程序库。

具体来说,使用StringEscapeUtils类,您可以在其中找到unescapeHtml4方法。

答案 1 :(得分:3)

如果您可以获得数据的String表示,则将其替换为正确的标记可以解决您的问题:

String htmlData = ...

htmlData = htmlData.replaceAll("&lt;", "<");
htmlData = htmlData.replaceAll("&gt;", ">");

答案 2 :(得分:1)

HTML可以用XML术语描述。 XML具有字符数据的概念,显然由字符组成。 XML中有五个特殊含义的字符:><&"' - 这些字符用于定义元素和分隔属性,因此解析器不会将它们视为普通字符。当您需要在XML文档中插入<文字时(就像我在本回答中所做的那样),您可以使用&lt;形式的字符引用,这样浏览器知道您不愿意启动XML标记。在HTML4 DTD中有252 named entities,因此使用replaceAll()来获取可读字符串是不可行的。

您最好了解HTML的工作原理,以便在必须构建存储和呈现数据时,您可以像Web浏览器一样思考。请注意:

&lt;tag&gt;

的含义非常不同
<tag>

所以你最好先论证你的问题,以便朝着正确的方向寻求帮助。

相关问题