Python - 搜索和替换XML文件中的内容

时间:2015-07-23 12:58:07

标签: python xml elementtree

我有一个要求,我有一个具有良好定义结构的示例XML文件。我想在XML文件中搜索标签/子项,用一些输入文件替换它的文本/值,并将更改保存到新的XML文件中,最好不要影响输入样本XML。

我知道这可以通过XML解析器按预期遍历到子节点来实现。但问题是,在我的XML文件的顶部,我有类似的东西

<nc:data xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">

我已经编写了一个python函数,如下所示,但是我没有得到预期的东西。

def search_replace():
    replicate()        // This function just makes a tmp file from sample input XML to work on. 
    tree = et.parse("/path/to/file/tmp_file.xml")
    tree.find('nc:data/child1/child2/child3').text = 'test'
    tree.write("new_file.xml")

请建议处理此问题的最佳方法。到目前为止,我不是很狡猾的技术!!

1 个答案:

答案 0 :(得分:0)

您需要创建将前缀映射到名称空间uri的字典,并将其作为find()的附加参数传递:

def search_replace():
    replicate()
    tree = et.parse("/path/to/file/tmp_file.xml")
    nsmap = {'nc': 'urn:ietf:params:xml:ns:netconf:base:1.0'}
    tree.find('nc:data/child1/child2/child3', nsmap).text = 'test'
    tree.write("new_file.xml")