Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python查找替换元素_Python_Xml_Dom - Fatal编程技术网

使用Python查找替换元素

使用Python查找替换元素,python,xml,dom,Python,Xml,Dom,我试图在一些XML代码中搜索标记并替换元素。以下是我的尝试: from xml.dom import minidom dom = minidom.parse('../../../lib/config/folder/config.xml') for tag_type in dom.getElementsByTagName('tag_type'): tag_type.childNodes = [dom.createTextNode("Replacement Word")] print

我试图在一些XML代码中搜索标记并替换元素。以下是我的尝试:

from xml.dom import minidom

dom = minidom.parse('../../../lib/config/folder/config.xml')

for tag_type in dom.getElementsByTagName('tag_type'):
    tag_type.childNodes = [dom.createTextNode("Replacement Word")]

print tag_type
我正在运行Python2.4,所以元素树不是一个选项。目前,我得到的答复是:

<DOM Element: tag_type at 0x1c28a0e0>

不确定它为什么不打印和不替换。

您必须使用删除和添加节点:

for tag_type in dom.getElementsByTagName('tag_type'):
    while tag_type.hasChildNodes():
        tag_type.removeChild(tag_type.firstChild)
    tag_type.appendChild(dom.createTextNode("Replacement Word"))
演示:

>>从xml.dom导入minidom
>>>xml=“”\
... 
...    
...       福
...       酒吧
...    
... 
... '''
>>>dom=minidom.parseString(xml)
>>>对于dom.getElementsByTagName(“标记类型”)中的标记类型:
...     而标记类型为.hasChildNodes():
...         标记类型.removeChild(标记类型.firstChild)
...     tag_type.appendChild(dom.createTextNode(“替换词”))
... 
>>>打印dom.toxml()
替换词
您必须使用删除和添加节点:

for tag_type in dom.getElementsByTagName('tag_type'):
    while tag_type.hasChildNodes():
        tag_type.removeChild(tag_type.firstChild)
    tag_type.appendChild(dom.createTextNode("Replacement Word"))
演示:

>>从xml.dom导入minidom
>>>xml=“”\
... 
...    
...       福
...       酒吧
...    
... 
... '''
>>>dom=minidom.parseString(xml)
>>>对于dom.getElementsByTagName(“标记类型”)中的标记类型:
...     而标记类型为.hasChildNodes():
...         标记类型.removeChild(标记类型.firstChild)
...     tag_type.appendChild(dom.createTextNode(“替换词”))
... 
>>>打印dom.toxml()
替换词

Python 2.4的ElementTree。抓取你的副本,Python 1.5.2(!)和更新版本都受支持。我无法下载它。不幸的是,我被我得到的东西困住了。谢谢。您不能只分配给
childNodes
。您必须使用操作树。这正是
print tag\u type
要打印的内容。您期望得到什么?如果您发布输入和所需输出的样子,将对我们有很大帮助。ElementTree for Python 2.4。抓取你的副本,Python 1.5.2(!)和更新版本都受支持。我无法下载它。不幸的是,我被我得到的东西困住了。谢谢。您不能只分配给
childNodes
。您必须使用操作树。这正是
print tag\u type
要打印的内容。你期望什么?如果你发布输入和期望的输出是什么样子,这会对我们有很大帮助。我如何从另一个文件夹中获取文件?我不确定我是否了解你。解析文件时使用不同的文件名?当我尝试此方法时,会出现一系列错误。我想这是因为我的xml文件不在运行脚本的活动文件夹中。我是否需要设置在另一个文件夹中查找xml文件的路径?@AwayFromMyDesk:您遇到了什么样的错误?你是如何解析这个文件的?请注意,我在示例代码中使用了
parseString()
,因为我在字符串值中包含XML。如果您有文件名,请使用
.parse()
。我在第1925、942、223行的parseString()中发现了一系列内部错误。显然不是在我的剧本里。我把它放回刚才的parse()现在我只是得到一个错误:NameError:name'appendChild'未定义如何从另一个文件夹中获取文件?我不确定我是否了解您的意思。解析文件时使用不同的文件名?当我尝试此方法时,会出现一系列错误。我想这是因为我的xml文件不在运行脚本的活动文件夹中。我是否需要设置在另一个文件夹中查找xml文件的路径?@AwayFromMyDesk:您遇到了什么样的错误?你是如何解析这个文件的?请注意,我在示例代码中使用了
parseString()
,因为我在字符串值中包含XML。如果您有文件名,请使用
.parse()
。我在第1925、942、223行的parseString()中发现了一系列内部错误。显然不是在我的剧本里。我把它放回刚才的parse(),现在我得到一个错误:NameError:name'appendChild'没有定义