如何从Postman解码后的响应中提取<fact>标签内的内容?
提取HTML中
<fact>标签内的内容 问题背景
从Postman响应解码得到以下HTML内容,需要提取所有<fact>标签之间的文本:
<div class="stl_01" style="left:7.6167em;top:6.1257em;"><span class="stl_05 stl_06 stl_07"><fact value="1%" class="accepted">百分之一</fact> </span></div> <div class="stl_01" style="left:7.6167em;top:7.6257em;"><span class="stl_05 stl_06 stl_07"><fact value="2%" class="accepted">百分之二</fact> </span></div> <div class="stl_01" style="left:7.6167em;top:9.1257em;"><span class="stl_05 stl_06 stl_07"><fact value="3%" class="accepted">百分之三</fact> </span></div> <div class="stl_01" style="left:7.6167em;top:10.6257em;"><span class="stl_05 stl_06 stl_07"><fact value="4%" class="accepted">百分之四</fact> </span></div>
解码原始数据的代码片段:
var parsedBase64=CryptoJS.enc.Base64.parse(ContentText); console.log(parsedBase64); var parsedStr = parsedBase64.toString(CryptoJS.enc.Utf8); console.log("Testing for content:" + parsedStr + "End content");
方案1:正则表达式提取
适合结构简单的HTML,直接在解码后的字符串上匹配:
在Postman脚本中,解码后添加正则匹配逻辑:
var parsedBase64=CryptoJS.enc.Base64.parse(ContentText); var parsedStr = parsedBase64.toString(CryptoJS.enc.Utf8); // 匹配<fact>标签内的文本内容 const factRegex = /<fact[^>]*>([^<]+)<\/fact>/g; const results = []; let match; while ((match = factRegex.exec(parsedStr)) !== null) { results.push(match[1].trim()); // 清理文本首尾空格 } console.log("提取的内容:", results); // 可选:将结果存入Postman环境变量 pm.environment.set("factContents", JSON.stringify(results));
说明:正则/<fact[^>]*>([^<]+)<\/fact>/g会匹配所有<fact>标签,捕获标签内的纯文本,trim()用于去除文本前后的冗余空格。
方案2:DOM解析(更可靠)
如果HTML结构复杂(比如标签嵌套、属性多变),DOM解析的稳定性远高于正则,Postman沙箱支持标准DOM API:
var parsedBase64=CryptoJS.enc.Base64.parse(ContentText); var parsedStr = parsedBase64.toString(CryptoJS.enc.Utf8); // 创建虚拟DOM解析器 const parser = new DOMParser(); const doc = parser.parseFromString(parsedStr, "text/html"); // 获取所有<fact>标签并提取文本 const factElements = doc.querySelectorAll("fact"); const results = Array.from(factElements).map(el => el.textContent.trim()); console.log("提取的内容:", results); // 可选:将结果存入Postman环境变量 pm.environment.set("factContents", JSON.stringify(results));
说明:通过DOMParser将HTML字符串转为DOM文档,用querySelectorAll精准获取所有<fact>元素,再提取每个元素的文本内容,这种方法能适配绝大多数HTML结构,避免正则的匹配漏洞。
内容的提问来源于stack exchange,提问作者Rajeswari Ramar
相关产品推荐
相关产品推荐

