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

Python3生成XML RSS脚本:Chrome打开XML时换行符丢失问题

嘿,这问题我之前踩过坑!Chrome渲染XML的时候有个小特性——它会自动忽略文本节点里的普通换行和多余空白,除非你明确告诉它要保留这些格式。另外也得先确认你的Python脚本生成的XML本身是不是真的带了正确的换行缩进,有时候咱们以为加了换行,但实际输出的XML可能被压缩成一行了。

给你几个具体的解决方向:

1. 确保生成的XML本身有正确的格式化缩进

你用的是rfeed库对吧?默认情况下toString()方法输出的XML可能是没有缩进的压缩格式。试试给它加上pretty=True参数,这样生成的XML会自动带上换行和缩进,Chrome的XML视图也能正确显示结构上的换行:

# 假设你生成Feed的代码是这样的
feed = Feed(
    title="你的RSS标题",
    link="你的Feed链接",
    description="Feed描述",
    items=[...]  # 你的Item列表
)

# 改成带pretty参数的toString()
xml_content = feed.toString(pretty=True)

# 保存到文件的时候也要注意用utf-8编码
with open("output.rss", "w", encoding="utf-8") as f:
    f.write(xml_content)

2. 让文本内容里的换行在Chrome中显示

如果是RSS条目里的文本内容(比如description)的换行消失了,那得区分两种情况:

  • 如果是纯文本内容:给对应的XML标签加上xml:space="preserve"属性,告诉浏览器保留空白和换行。比如用rfeed构造Item的时候,可以直接给description元素加属性:
    from rfeed import Element
    
    # 构造带xml:space属性的description元素
    desc_element = Element(
        "description",
        {"xml:space": "preserve"},
        "第一行内容\n第二行内容\n第三行内容"
    )
    
    item = Item(
        title="条目标题",
        link="条目链接",
        description=desc_element
    )
    
  • 如果允许HTML内容:直接把文本里的\n替换成HTML的<br>标签,这样Chrome渲染的时候就会解析成换行:
    raw_text = "第一行内容\n第二行内容\n第三行内容"
    formatted_text = raw_text.replace("\n", "<br>")
    
    item = Item(
        title="条目标题",
        link="条目链接",
        description=formatted_text
    )
    

小提醒

Chrome的XML视图会自己对XML结构进行重新排版,但文本内容里的换行必须通过上述方法处理才会显示。如果还是不行,可以右键页面查看“网页源代码”,确认生成的XML里确实存在换行——要是源代码里都没有换行,那就是脚本生成的问题,优先检查pretty=True是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:24:14