Python使用.find搜索XML(属性错误)

时间:2013-07-30 17:36:14

标签: python xml

我的代码出错:'AttributeError:文档实例没有属性'find'

我可以将find函数与xml doc一起使用吗?最终我想在xml doc中找到一个单词并替换它。

from xml.dom.minidom import parse

config_file = parse('/My/File/path/config.xml')

def find_word(p):
        index = p.find('Word')
        return index

print find_word(config_file)

2 个答案:

答案 0 :(得分:1)

解析后,XML文档是Document(DOM)对象,而不是字符串。 Document个对象确实没有find()方法,因为您不能只搜索和替换其中的文本。

如果您知道包含要更改的文本的元素的ID或标记,则可以使用getElementByIdgetElementsByTagName,然后在返回的元素的子项中搜索文本。否则,您可以递归遍历文档中的所有节点,并在每个文本节点中搜索您要更改的文本。

有关使用文档对象模型的更多信息,请参阅DOM documentation

答案 1 :(得分:0)

config_file这里的类型是xml.dom.minidom.Document而不是字符串。所以,发现将无法奏效。使用minidom文档中的getElementsByTagName方法查找所需的元素。

您应该执行以下操作,

>>> from xml.dom.minidom import parseString
>>> my_node = parseString('<root><wordA>word_a_value</wordA></root>');
>>> name = my_node.getElementsByTagName('wordA');
>>> print name[0].firstChild.nodeValue
word_a_value
>>>