我有一个要求,我有一个具有良好定义结构的示例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")
请建议处理此问题的最佳方法。到目前为止,我不是很狡猾的技术!!
答案 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")