如何使用Python搜索和替换XML?

时间:2009-06-11 17:16:23

标签: python xml regex

我正在制作一个用于翻译xml文档的脚本。它实际上非常酷,想法是(并且它正在工作)获取xml文件(或xml文件的文件夹)并打开它,解析xml,获取某些标签之间的任何内容并使用google translate api翻译它并替换xml文件的内容。

正如我所说,我有这个工作,但只有相当严格的xml格式的文档,现在我必须使它与格式不同的文档兼容。所以我的想法是:

解析xml,找到一个节点,例如:

<template>lorem lipsum dolor mit amet<think><set name="she">Ada</set></think></template>

将其保存为字符串,执行一些正则表达式搜索并替换此字符串。但遗憾的是,我不知道如何继续进行。我想搜索字符串(xml节点)查找介于两个标签之间的文本,在本例中为“lorem lipsum dolor mit amet”和“Ada”,调用这些文本作为参数的函数然后插入函数的结果在它起源的同一个地方。

我无法获取文本并重建xml格式的原因是,将有不同格式的xml节点,所以我需要它是相同的...

2 个答案:

答案 0 :(得分:7)

不要尝试使用正则表达式解析XML! XML is not regular因此正则表达式不适合执行此类任务。

使用实际的XML解析器。其中许多都可以用于Python。快速搜索引导我this SO question,其中介绍了如何在Python中使用XPath。

答案 1 :(得分:5)

ElementTree对于这种解析来说是个不错的选择。它易于使用且轻量级,并支持在对其执行操作后输出XML(就像调用write()一样简单)。它与最新版本的Python标准库一起打包(我相信2.6 +)。