如何使用python更新xml标记值



我是Python新手,我想知道如何使用Python实现以下功能。

我有一个XML文件,我想打开文件,必须为标签设置新的值。

如果在更新过程中出现任何故障,则文件返回原始状态

文件名:ABC.xml

<Root>
<Location>
<city>WrongCity</city>
<state>WrongState</state>
<country>WrongCountry</country>
</Location>
</Root>

将文件路径传递给某个函数

def correctValues(filepath)
    # update the wrong information 
    try:
        set city = MYcity
        set state = somevalue
        set country = somedata
    except:
        Rollback to original file

如果在值更新过程中没有问题,则需要将原始文件更新为正确的值。

期望输出:

<Root>
<Location>
<city>MYcity</city>
<state>somevalue</state>
<country>somedata</country>
</Location>
</Root>

如果有任何问题,文件应该回滚。

最简单的方法可能是:

  1. 调用库将XML解析为实际的节点树;

  2. 修改树,但你需要;和

  3. 把新树写出来

使用"bs4"(有一些问题,但通常是足够的),它看起来像:

from bs4 import BeautifulSoup as BS
import codecs
badCityDict = {  # List of corrections
    "Washingtun": "Washington",
    "Bolton": "Boston"
}
# Second parameter to constructor picks what parser bs4 should use.
tree = bs4(codecs.open(myfile, mode='r', encoding='utf-8'), 'lxml')
changeCount = 0
cityNodes = tree.find_all('city')
for cn in cityNodes:
    cnText = cn.string.strip()
    if cnText in badCityDict:
        cn.string.replace_with(badCityDict[cnText])
        changeCount += 1
### same thing for state, country, and so on...
if (changeCount > 0):
    print tree.prettify()

相关内容

  • 没有找到相关文章

最新更新