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

Prism.js在NiceGUI中无法实现XML语言代码高亮的问题求助

解决NiceGUI中Prism XML代码高亮失效问题

问题根源

XML代码中的<和>未被转义为&lt;和&gt;,被浏览器当作HTML标签解析,导致Prism无法识别XML语法结构。同时你当前使用的Prism CSS(1.5.0)和JS(1.23.0)版本不一致,可能引发兼容性问题。

解决方案

1. 统一Prism版本并确保XML语言支持

将CSS和JS换成相同版本,推荐使用匹配的稳定版,同时可额外引入XML组件确保语法支持:

ui.add_head_html('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css"/>')
ui.add_body_html('<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js"></script>')
# 可选:单独引入XML语言组件,确保语法识别
ui.add_body_html('<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-xml.min.js"></script>')

2. 手动转义XML特殊字符

使用Python标准库html模块转义XML中的<、>等特殊字符,再通过Prism代码块渲染:

import html

# 原始XML代码
xml_content = """<root>
    <user name="admin">
        <email>admin@example.com</email>
    </user>
</root>"""

# 转义特殊字符
escaped_xml = html.escape(xml_content)

# 渲染带Prism类的代码块
ui.html(f'<pre><code class="language-xml">{escaped_xml}</code></pre>')

3. 触发Prism重新高亮(动态场景)

如果XML代码是动态加载的,需要手动调用Prism的高亮方法确保生效:

# 在代码渲染完成后执行
ui.run_javascript('Prism.highlightAll()')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:32:43