我有一个HTML。 HTML的内容如下所示
<html>
<head>
<style>
.....
</style>
</head>
<body>
....
<p class=TableaParagraph>
<span style="color: #000000; font-size: 10pt; font-family: Calibri">
^BUYER-NAME-FIRST^Buyer Last Name:
</span>
</p>
<p class=TableaParagraph>
<span style="color: #000000; font-size: 10pt; font-family: Calibri">
^COBUYER-NAME-LAST COBUYER-NUMBER="1"^Current Address:
</span>
</p>
....
<span style="color: #000000; font-size: 9pt; font-family: Calibri">
Total Earnest Deposits paid upon signing this agreement^TOTAL-EARNEST-DEPOSIT-AMOUNT^
</span>
.....
</body>
</html>
HTML会出现一些以^
开头并以^
结尾的自定义标记,例如^COBUYER-NAME-FIRST COBUYER-NUMBER="1"^
这些标记可以出现在html中的任何位置。我想查找以^
开头和结尾的每个标记,并将其替换为值。
问题在于jquery选择器^
用于start
,而$
用于end
。但是这里我的标签还包含^
。那么如何找到标签并将其替换为值。与代替^BUYER-NAME-FIRST^
一样,我想将其替换为Basit
。
一旦我将获得所有标签,那么我将不得不循环它以替换该值。但是如何以有效的方式获取此HTML中的所有标记。
这是我到目前为止的代码:
String html = rtfService.convertRTFToHtml(rtfFile);
Document doc = Jsoup.parse(html);
Elements links = doc.select("span[href]");
答案 0 :(得分:1)
你所拥有的不是标签,它们只是元素中的文字。
jSoup支持:contains
伪选择器,在你的情况下更有用的是:containsOwn
伪选择器; details。因此,您可以找到包含^
的元素:
Elements matches = doc.select("*:containsOwn(^)");
...然后在元素的文本节点上使用正则表达式(可能)或类似的循环来查找匹配的^...^
标记,并用适当的值替换它们。