首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Etree和Python编辑XML

用Etree和Python编辑XML
EN

Stack Overflow用户
提问于 2014-05-18 15:54:06
回答 1查看 196关注 0票数 2

我有一个Jboss host.xml文件,它的有效结构是

代码语言:javascript
复制
<host xmlns="urn:jboss:domain:1.5">
...
    <domain-controller>
       <remote host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
    </domain-controller>
...
</host>

并试图根据传入脚本的第一个参数使用Etree更新远程主机,但是使用下面的代码,它甚至无法找到域控制器节。

代码语言:javascript
复制
import xml.etree.ElementTree as ET
import sys

newhost=sys.argv[1]

tree = ET.parse('host.xml').getroot()
print len(tree.findall('domain-controller'))
for elem in tree.findall('domain-controller'):
        print elem
    oldhost = elem.find('./remote').text
    print oldhosthost
    oldhost.set('host','newhost')

我已经能够使用minidomgetElementsByTagName找到正确的元素,但我更愿意使用Etree,因为这似乎是首选的方法。

有人能告诉我我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-18 16:08:19

由于您的XML位于名称空间(xmlns)中,您的标记以名称空间为前缀:

代码语言:javascript
复制
for elem in tree.findall('{urn:jboss:domain:1.5}domain-controller'):

在使用ElementTree:Parsing XML with namespace in Python via 'ElementTree'时,请参阅此线程以了解名称空间中标记的可选寻址。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23723869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档