如何在xml文件中解析后修改字符串?

时间:2017-02-09 01:03:31

标签: python xml

我是python的新手,我想学习python语言。在xml文件中解析后,我无法找到修改字符串的解决方案。

这是示例xml文件:

<Celeb>
  <artist>
    <name>Sammy Jellin</name>
    <age>27</age>
    <bday>01/22/1990</bday>
    <country>English</country>
    <sign>Virgo</sign>
  </artist>
</Celeb>

以下是代码:

def edit_f():
# Get the 3rd attribute 
    root = ET.parse('test_file/test_file.xml').getroot()
    subroot = root.getchildren()
    listchild = subroot.getchildren()[2].text
    print(listchild)

# Update the string for the <bday>
    replaceStr = listchild.replace('01/22/1990', '01/22/1992')

def main():
    edit_f()

结束

如何更新日期?我也尝试过使用datetime()但没有用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我为您的示例添加了评论的工作代码。

def edit_f():
    tree = ET.parse('test_file/test_file.xml')
    root = tree.getroot()
    bdays = root.findall('.//artist/bday')  # note: multiple elements
    bday = bdays[0]  # assuming there is only one artist/bday element
    bday.text = '01/22/1992'  # or ever any string you need
    tree.write('test_file/test_file.xml')  # with edited bday

此处您不需要datetime,只需指定您想要的任何字符串bday.text

N.B。 tree.write()将重写您的源文件,您无法撤消该文件。将输出写入另一个文件会更安全。