使用Python操控和保存XML,无需第三方库

2024-04-23 17:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个xml,我必须在其中搜索一个标记,并用一个新值替换tag的值。例如

<tag-Name>oldName</tag-Name>  

并将oldName替换为newName类似

^{pr2}$

保存xml。如果不使用第三方库,比如BeautifulSoup,我怎么能做到这一点呢

谢谢你


Tags: name标记tagxmlbeautifulsoup新值pr2newname
3条回答

标准库的最佳选择是(我认为)是xml.etree包。在

假设示例标记在文档中某个位置只出现一次:

import xml.etree.ElementTree as etree
# or for a faster C implementation
# import xml.etree.cElementTree as etree

tree = etree.parse('input.xml')
elem = tree.find('//tag-Name') # finds the first occurrence of element tag-Name
elem.text = 'newName'
tree.write('output.xml')

或者,如果标记名多次出现,并且您希望将它们全部更改(如果它们的内容为“oldName”):

^{pr2}$

如果您完全肯定字符串<tag-Name>永远出现在标记内,并且XML将始终如此格式化,那么您可以始终使用一些好的旧字符串操作技巧,例如:

xmlstring = xmlstring.replace('<tag-Name>oldName</tag-Name>', '<tag-Name>newName</tag-Name>')

如果XML的格式并不总是像<tag>value</tag>那样方便,可以编写如下内容:

^{pr2}$

其他人已经提到了xml.dom.minidom,如果您不能绝对肯定您的XML将如此简单,那么这可能是一个更好的主意。但是,如果您能保证这一点,请记住XML只是一大块文本,您可以根据需要对其进行操作。在

我在一些生产代码中使用了类似的技巧,其中像if "somevalue" in htmlpage这样的简单检查比调用beauthoulsoup、lxml或其他*ML库要快得多,也更容易理解。在

Python有用于处理xml的“内置”库。为了完成这个简单的任务,我会研究minidom。您可以在此处找到文档:

http://docs.python.org/library/xml.dom.minidom.html

相关问题 更多 >