【发布时间】:2011-06-24 05:10:10
【问题描述】:
JSoup 遇到以下问题。
我要解析修改以下html代码:
<code>
<style type="text/css" media="all">
@import url("http://hakkon-aetterni.at/modules/system/system.base.css?ll3lgd");
@import url("http://hakkon-aetterni.at/modules/system/system.menus.css?ll3lgd");
@import url("http://hakkon-aetterni.at/modules/system/system.messages.css?ll3lgd");
@import url("http://hakkon-aetterni.at/modules/system/system.theme.css?ll3lgd");
</style>
</code>
我正在使用以下代码来实现:
Elements cssImports= doc.select("style");
for (Element src : cssImports) {
String regex ="url\\(\"(.)*\"\\)";
String data =src.data();
String link;
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(data);
while (m.find()){
link=m.group().substring(5,m.group().length()-2);
doc=Jsoup.parse(doc.html().replace(link, ""));
}
}
首先,它有效。所有导入 url 都替换为字符串“FOUND”。我遇到的问题是,在最后一个导入语句和关闭的 </style> 标记之间有很多新行,以前没有。
任何线索为什么会发生这种情况以及如何避免它?
很抱歉格式错误,但我的代码的某些部分似乎在发布时刚刚被删除。第一个代码块周围有一个样式标签...
【问题讨论】:
-
我实际上遇到了与 jsoup 完全相同的问题。我想它是 jsoup 通过插入额外的 HTML 来验证文档来试图变得“聪明”。我没有适合你的解决方案。我最终改用了 jericho HTML 解析器。