我正在寻找一种用Java解析这种HTML的方法。
<tr class="cBackHeader backCat" ...>
<th class="padding" ...>
...
<a href="{{URL CATEGORY}}" class="cHeader">{{TITLE CATEGORY}}</a>
</th>
</tr>
(<tr class="sujet..." ...>
...
<td ... class="subjectCase3" ...>
<a href="{{URL TOPIC}}" class="cCatTopic" title="{{ID TOPIC}}">{{TITLE TOPIC}}</a>
</td>
...
</tr>)+
我想在{{}}之间得到每个变量的良好顺序。 我设法用这种模式获得了第一部分:
<th class=\"padding\".*?>.*?<a href=\"(.+?)\" class=\"cHeader\">(.+?)</a></th>
但我不知道如何处理第二部分(可能是很多td.subjectCase3)。
编辑:这是我使用Jsoup的解决方案,但这不如使用Pattern和Matcher优化。
Document document = Jsoup.parse(response);
Element tmp;
Elements elements = document.select("tr.cBackHeader,tr.sujet");
for (Element el : elements) {
if (el.hasClass("cBackHeader")) {
tmp = el.select("a.cHeader").first();
result.add(new TopicItem(null, tmp.ownText()));
} else if (el.hasClass("sujet")) {
tmp = el.select("td.sujetCase3 a").first();
result.add(new TopicItem(new Topic(tmp.attr("title"), tmp.attr("href"), tmp.ownText()), null));
}
}
您怎么看?
答案 0 :(得分:-1)
我会使用正则表达式:
(href="{{).+?[}]
总会拉出来: href =“{{URL TOPIC}
然后在Java中我将使用String.split()方法。
String string = "href="{{URL TOPIC}";
String[] parts = string.split("{");
String part1 = parts[0]; // href="
String part2 = parts[1]; // ""
String part3 = parts[2]; // URL TOPIC}
从那里我会修剪尾随的“}”;
return part3.trim("}");
它不漂亮,但它会得到结果。