python修改xml文件保留原文件的注释_python – 将修改后的Beautiful Soup树写入文件,同时保持原始XML格式...

本文档介绍如何使用Python的Beautiful Soup库修改XML文件中的特定标记,同时保留原有的文件格式和注释。通过示例脚本展示了如何处理XML文件,替换版本号,并确保写回文件时不破坏原始格式。
摘要由CSDN通过智能技术生成

我们有一个

XML文档,其中包含我们希望更改的标记:

… 1.0< /版本> …

它深埋在XML文件中,但我们已经成功地使用Beautiful Soup用命令行参数替换它的内容.

问题是在修改树之后,我们需要回写我们从中读取的文件.但是,我们希望保持文档的原始格式.我用的时候:

fileForWriting = open(myXmlFile, 'w')

fileForWriting.write(soup.prettify())

prettify()调用打破了格式化,我最终得到:

1.0

有没有办法维护XML文档的原始格式,同时替换单个标记文本?

注意:使用简单:

fileForWriting.write(STR(汤))

保持文本和标签在同一条线上,但消除了为了可读性而添加了人为的缩进和额外换行符.关闭,但没有雪茄.

根据要求,整个脚本:

from BeautifulSoup import BeautifulSoup as bs

import sys

xmlFile = sys.argv[1:][0]

version = sys.argv[1:][1]

fileForReading = open(xmlFile, 'r')

xmlString = fileForReading.read()

fileForReading.close()

soup = bs(xmlString)

soup.findAll('version')[1].contents[0].replaceWith(version)

fileForWriting = open(xmlFile, 'w')

fileForWriting.write(str(soup))

fileForWriting.close()

然后使用以下命令运行脚本:

python myscript.py someFile.xml 1.2

最佳答案 如果使用xml.elementtree,则tree.write(file)方法仅用LF替换CRLF,这在尝试将XML文件导入到PyXB时也会产生问题.

我找到的解决方案是使用ElementTree来找到我要替换的内容.然后我做source_XML =’new value’.join(source_XML.split(‘你需要替换的东西))最后一个file.write(source_XML)

这不好,但它解决了这个问题.但是,我不介意缩进,所以对此我不能说.每当我需要打印它时,我只会使用pprint.pprint().

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值