我们有一个 XML 文档,其中包含我们希望更改的标签:
...<version>1.0</version>...
它深埋在 XML 文件中,但我们成功地使用 Beautiful Soup 将其内容替换为命令行参数。
问题是在修改树之后,我们需要写回我们从中读取它的文件。但是,我们希望保持文档的原始格式。当我使用:
fileForWriting = open(myXmlFile, 'w')
fileForWriting.write(soup.prettify())
该prettify()
调用破坏了格式,我最终得到:
<version>
1.0
</version>
有没有办法在替换单个标记文本的同时保持 XML 文档的原始格式?
注意:简单地使用:
fileForWriting.write(str(soup))
将文本和标签保持在同一行,但消除了为便于阅读而人工添加的缩进和额外换行符。关闭,但没有雪茄。
根据要求,整个脚本:
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