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

使用BaseX 10.7解析含HTML字符的JSON时遇转义问题求助

解决BaseX 10.7中json:parse解析含HTML字符的JSON时的转义问题
  • 先确认JSON源文件的转义状态
    检查你的原始JSON文件:如果里面的HTML字符已经是双重转义状态(比如<p>被写成&lt;p&gt;,然后在JSON里又被转义为&amp;lt;p&amp;gt;),那BaseX解析后自然会得到&lt;p&gt;。这种情况下需要先还原实体:

    let $parsed-json := json:parse(file:read('your-file.json'))
    -- 批量还原所有HTML实体的转义
    let $decoded-text := fn:replace($parsed-json/text, '&amp;([a-zA-Z0-9]+);', '&$1;')
    return $decoded-text
    
  • 结合html:parse处理HTML内容
    还原实体后,若需要将文本转为可操作的HTML节点,使用BaseX的html:parse函数:

    let $json-content := file:read('your-file.json')
    let $parsed-json := json:parse($json-content)
    let $decoded-text := fn:replace($parsed-json/text, '&amp;([a-zA-Z0-9]+);', '&$1;')
    -- 解析为HTML节点,可设置解析器模式适配宽松HTML
    let $html := html:parse($decoded-text, map { 'parser': 'tagsoup' })
    return $html//p/strong
    
  • 调整BaseX的HTML解析全局设置
    如果html:parse解析异常,可在BaseX控制台设置HTML解析器为更宽容的TagSoup模式:

    SET HTML.PARSER TAGSoup
    

    这个设置会让BaseX更好地处理不规范的HTML标签。

  • 从源头避免双重转义
    如果JSON是你自己生成的,确保生成时只转义JSON要求的特殊字符(双引号、反斜杠等),不要额外转义HTML标签。比如在生成JSON时,直接将<p>...</p>作为字符串值写入,而不是先转成&lt;p&gt;...&lt;/p&gt;再写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:12:15