如何将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
相关产品推荐
相关产品推荐

