我的文字如下:
我明天和这个人约会。好吧我和其他成千上万的人。 &lt; br /&gt;&lt; br /&gt;&lt; img src =“http://www.newwest.net/images/thumbnails_feature/barack_obama_westerners.jpg"><br /&gt;&lt; br /&gt;明天早上我将在愚蠢的时候起床并开车去曼彻斯特, NH看到巴拉克奥巴马说话。&lt; br /&gt;&lt; br /&gt;你们都应该来吧!&lt; br /&gt;&lt; br /&gt;&lt; a href =“http://nh.barackobama.com/manchesterchange">RSVP了事件&LT; / A&GT;我也想要清理它:
我和这个家伙约会了 明天。好吧,我和成千上万 其他 http://www.newwest.net/images/thumbnails_feature/barack_obama_westerners.jpg 明天早上我 将是愚蠢的起床 时间和开车到 新罕布什尔州曼彻斯特看巴拉克奥巴马 你说的 应该也来! h ** p://nh.barackobama.com/manchesterchange RSVP 对于该事件
我想为此编写一个JAVA程序。任何指针/建议都将被理解。标签不限于上述帖子。这只是一个例子。
谢谢!
PS:在第二个超链接中用t替换*,因为Stack Overflow不允许我发布多个链接。
答案 0 :(得分:1)
JTidy会做你想要的。我只是通过将帖子中的文本块保存为test.txt
来尝试它,并使用以下选项运行JTidy:
java -jar jtidy-r938.jar -asxml test.txt >test.html
它产生了以下格式良好的XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator"
content="HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net" />
<title></title>
</head>
<body>
I've got a date with this fellow tomorrow. Well me and thousands of
others. <br />
<br />
<img
src="http://www.newwest.net/images/thumbnails_feature/barack_obama_westerners.jpg" /><br />
<br />
Tomorrow morning I will be getting up at stupid o'clock and driving
up to Manchester, NH to see Barak Obama speak. <br />
<br />
You all should come too!<br />
<br />
<a href="http://nh.barackobama.com/manchesterchange">RSVP for the
event</a>
</body>
</html>
如果您使用API而不是命令行,您将能够提取您感兴趣的位并丢弃其余位。
答案 1 :(得分:0)
我会查看一个HTML解析器,例如JTidy。尽管它的名称,它将解析HTML并提供一个有用的API,以便您提取所需的内容。
答案 2 :(得分:0)
“整理”具有XML标签的文本的最简单方法是使用正则表达式来标识任何标签(即以“&lt;”开头并以“&gt;”结尾的任何内容以及其间的所有内容) 。请注意,无论XML是否格式正确,因此无论开放标记是否与结束标记匹配,它都会清除任何标记。
例如,
String noXmlString = xmlString.replaceAll("\\<.*?\\>", "");
将删除给定字符串中的所有标记。缺点是它不会保留图像链接,也不会根据您的示例保留超链接。希望这会有所帮助!
编辑于11:58 04/04/10:尝试此操作以删除HTML编码的HTML标记(即以<
开头并以>
结尾的任何内容)...
String noHtmlHtmlString = htmlHtmlString.replaceAll("<.+?>", "");
然后删除任何其他HTML编码/格式化的位,例如"
(即任何以&amp;开头并以其结束的内容;并且在其间符合有效字而没有空格或中断)使用
String noHtmlEncodingString = htmlEncodingString.replaceAll("&\\w+?;", "");
如果存在任何格式错误的HTML / XML,除非存在已知模式,否则无法捕获它们。