请问是否存在可用于Ballerina的HTML标签移除类库?
移除Ballerina字符串中的HTML标签
如果找不到现成的类库,直接用Ballerina的正则表达式功能就能快速实现需求,以下是两种可行的实现方式:
方法一:基础版——移除所有HTML标签
利用ballerina/regex模块的replaceAll函数,匹配并移除所有HTML标签(包括带属性的自闭合标签):
import ballerina/regex; import ballerina/io; function stripHtmlTags(string input) returns string { // 匹配所有以<开头、>结尾的HTML标签内容 return regex:replaceAll(input, "<[^>]+>", ""); } // 示例调用 public function main() { string rawReportField = "<div class='result'><h3>高危漏洞</h3><p>共检测到5个</p></div>"; string cleanContent = stripHtmlTags(rawReportField); io:println(cleanContent); // 输出:高危漏洞共检测到5个 }
方法二:进阶版——保留基础文本格式
如果需要保留换行、段落这类可读性格式(比如把<br>、</p>转成换行符),可以扩展替换逻辑:
import ballerina/regex; import ballerina/io; function stripHtmlTagsWithFormat(string input) returns string { // 先替换换行类标签为换行符 string formatted = regex:replaceAll(input, "<br\\s*/?>|</p>", "\n\n"); // 移除剩余所有HTML标签 return regex:replaceAll(formatted, "<[^>]+>", ""); } // 示例调用 public function main() { string rawReportField = "<p>漏洞详情:</p><br><p>1. SQL注入(高危)</p><p>2. 弱密码(中危)</p>"; string cleanContent = stripHtmlTagsWithFormat(rawReportField); io:println(cleanContent); // 输出: // 漏洞详情: // // 1. SQL注入(高危) // // 2. 弱密码(中危) }
额外提示
- 如果扫描报告里有HTML注释、CDATA块这类特殊内容,可以先通过
regex:replaceAll(input, "<!--.*?-->|<!\\[CDATA\\[.*?\\]\\]>", "")提前清理,再执行标签移除。 - 若遇到异常格式的嵌套HTML,正则处理不够严谨的话,可以通过Ballerina的Java互调用能力,直接使用Java的JSoup库做解析,但对于扫描报告这类结构化程度不高的文本,正则方案足够轻量高效。
内容的提问来源于stack exchange,提问作者Gayal Dassanayake
相关产品推荐
相关产品推荐

