You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DataWeave 2.0/Mule 4检测HTML是否存在指定标题

DataWeave 2.0 检测HTML特定标题实现方案

完全可以通过DataWeave 2.0原生能力实现该校验需求,不需要引入额外Mule组件,利用内置的XML解析和节点递归查询能力即可完成。

实现逻辑

  • 将输入HTML文本按XML格式宽松解析,兼容常规HTML的格式特性
  • 递归提取文档中所有h1~h6级别的标题节点
  • 比对标题节点的文本内容与目标值,输出校验结果

实现代码

%dw 2.0
output application/json
var targetTitleText = "Name"
// 宽松解析HTML为XML结构,避免命名空间、非法标签名导致解析失败
var parsedDoc = read(payload, "application/xml", {
    allowInvalidXmlNames: true,
    skipNamespaces: true
})
// 聚合所有层级的标题节点,若仅需匹配指定级别标题(比如仅h2)可直接写对应标签选择器
var allTitleNodes = parsedDoc..*h1 ++ parsedDoc..*h2 ++ parsedDoc..*h3 ++ parsedDoc..*h4 ++ parsedDoc..*h5 ++ parsedDoc..*h6
---
{
    // 布尔值校验结果,true代表存在目标标题
    checkResult: any(allTitleNodes match (node) -> trim(node) == targetTitleText),
    // 可选:返回匹配到的标题节点详情,不需要可删除该字段
    matchedNodes: allTitleNodes filter (node) -> trim(node) == targetTitleText
}

示例运行结果

传入提供的HTML示例时,脚本返回结果如下:

{
  "checkResult": true,
  "matchedNodes": [
    "Name"
  ]
}

注意事项

  • 若待处理HTML存在未自闭合的单标签(比如<br>、<img>),可以在解析前先用replace函数将这类标签替换为自闭合格式(比如<br/>),避免XML解析报错
  • 脚本中使用trim()处理标题文本,是为了兼容标题前后存在多余空格、换行的场景,若需要严格完全匹配,直接删除trim()包裹即可
  • 如果仅需要匹配特定级别的标题,比如仅查找h2标签,直接将allTitleNodes赋值为parsedDoc..*h2即可,无需聚合所有层级标题

内容的提问来源于stack exchange,提问作者Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:27:47