我想用Java解析HTML文本。
我尝试使用 javax.swing.text.html.HTMLEditorKit 解析HTML数据。它帮助我从HTML获取数据。但我有一个HTML数据,如 -
<span class="TitleServiceChange" >Service Change</span>
<span class="DateStyle">
&nbsp;Posted:&nbsp;12/16/2012&nbsp; 8:00PM
</span><br/><br/>
<P>
周围的'&amp; lt'和'&amp; gt'而不是'&lt;'和'&gt; “
在解析上述文本时,我收到错误 -
Parsing error: start.missing body ? ? at
请建议我解决我的问题。 提前谢谢。
答案 0 :(得分:5)
为了取消包含在字符串中的完整转义字符集,您可以使用Apache Commons Lang实用程序库。
具体来说,使用StringEscapeUtils类,您可以在其中找到unescapeHtml4
方法。
答案 1 :(得分:3)
如果您可以获得数据的String
表示,则将其替换为正确的标记可以解决您的问题:
String htmlData = ...
htmlData = htmlData.replaceAll("<", "<");
htmlData = htmlData.replaceAll(">", ">");
答案 2 :(得分:1)
HTML可以用XML术语描述。 XML具有字符数据的概念,显然由字符组成。 XML中有五个特殊含义的字符:>
,<
,&
,"
和'
- 这些字符用于定义元素和分隔属性,因此解析器不会将它们视为普通字符。当您需要在XML文档中插入<
文字时(就像我在本回答中所做的那样),您可以使用<
形式的字符引用,这样浏览器知道您不愿意启动XML标记。在HTML4 DTD中有252 named entities,因此使用replaceAll()
来获取可读字符串是不可行的。
您最好了解HTML的工作原理,以便在必须构建存储和呈现数据时,您可以像Web浏览器一样思考。请注意:
<tag>
与
的含义非常不同<tag>
所以你最好先论证你的问题,以便朝着正确的方向寻求帮助。