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

如何将PrettyTable生成的HTML转为XHTML以适配Confluence的createPage接口?

解决PrettyTable HTML转Confluence兼容XHTML的问题

我之前也踩过Confluence接口只认标准XHTML的坑,给你两个实用的解决方案:

方案一:用lxml将HTML转成合规XHTML

这是最稳妥的办法,借助lxml库的HTML解析能力自动修复不规范的标签,生成完全符合XHTML标准的内容。代码示例:

from lxml import html
from prettytable import PrettyTable

# 创建并填充你的PrettyTable实例
pt = PrettyTable(["Name", "Age", "City"])
pt.add_row(["Alice", 30, "New York"])
pt.add_row(["Bob", 25, "London"])

# 获取PrettyTable生成的原始HTML
raw_html = pt.get_html_string()

# 解析HTML并转换为标准XHTML
xhtml_tree = html.fromstring(raw_html)
valid_xhtml = html.tostring(xhtml_tree, method='xhtml', encoding='utf-8').decode('utf-8')

# 现在就可以把valid_xhtml传给confluence.createPage()接口了

lxml会自动处理所有兼容细节:比如把<br>改成<br/>、确保所有标签闭合、给属性值加上双引号,完全匹配Confluence的XHTML要求。

方案二:自定义输出(不推荐依赖私有方法)

你提到的_get_formatted_html_string是PrettyTable的私有内部方法,没有公开文档,后续版本随时可能被修改或移除,所以不建议直接调用。如果一定要手动控制格式,可以在get_html_string的基础上做针对性替换:

raw_html = pt.get_html_string()
# 替换未闭合的空标签,根据实际输出补充规则
valid_xhtml = raw_html.replace("<br>", "<br/>").replace("<hr>", "<hr/>")

不过这种硬编码替换容易遗漏情况,不如用专业的HTML转XHTML库靠谱。

额外测试小技巧

转换完成后,可以先把生成的XHTML内容保存到本地.xhtml文件,手动上传到Confluence页面测试显示效果,确认没问题后再调用接口,避免反复调试接口浪费时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:12:32