【问题标题】:python xml parsing; multiple xml filespython xml解析;多个xml文件
【发布时间】:2013-10-28 09:56:50
【问题描述】:

我有多个具有相似元素的 xml 文件。如何从多个文件中提取子元素?我编写了一个示例代码,它从单个文件中提取所需的元素,但我需要从多个 xml 文件中提取。这里的主要问题是它应该仅在 admin-server-name 等于 name 时打印所需的字段

#!/usr/bin/python
import commands
from xml.dom.minidom import parse
from xml.dom import minidom
import xml.dom.minidom
cmd = "find . / -name config.xml 2>/dev/null |grep -w config/config.xml"
p = commands.getoutput(cmd)
count=0;
admnprt=[]
lstnaddr=[]
dmnver=[]
admnsrvnme=[]
serverName=[]
word=p.rstrip().split('\n')
print word
print "no of domains are %s" %len(word)
for line in word :
        count =count +1
        DomTree =xml.dom.minidom.parse(line)
    domain=DomTree.documentElement
        admnprt=domain.getElementsByTagName("administration-port")
    lstnaddr=domain.getElementsByTagName("listen-address")
    admnsrvnme=domain.getElementsByTagName("admin-server-name")
    dmnver=domain.getElementsByTagName("domain-version")
    serverName = document.getElementsByTagName("name")
    if(serverName == "admnsrvnme"):
        for i in admnprt:
            print "administration-port for %s domain is " % count + " " + "%s" %i.childNodes[0].data
        for j in lstnaddr:
            print "listen-address for %s domain is " % count + " " + "%s" %j.childNodes[0].data


    for a in admnsrvnme:
        print "admin-server-name for %s domain is " % count + " " + "%s" %a.childNodes[0].data
    for b in dmnver:
        print "domain-version for %s domain is " % count + " " + "%s" %b.childNodes[0].data

【问题讨论】:

  • 如果您有新代码而不是编辑您的问题(在旧代码下方添加标题为“@edit:”的新代码)。比您可以在我的答案下方的 cmets 中写下您向问题添加新信息。不要编辑我的答案。如果我为您的问题找到新的解决方案,我会将其放在我的答案中。
  • sorry furas!请原谅我......我对python很陌生,请帮助我编辑代码
  • 你能补充一下:你得到的输出,你期望的输出,和一些config.xml文件吗?或者您可以通过邮件发送:bartlomiej.burek@gmail.com
  • 谢谢弗拉斯!我已将文件邮寄给您,请检查您的收件箱

标签: python xml xml-parsing


【解决方案1】:

让您的代码运行并为所有文件调用它。

#!/usr/bin/python

import sys
from xml.dom.minidom import parse
import xml.dom.minidom

def parse_file(filename):
    DOMTree = xml.dom.minidom.parse(filename)
    domain=DOMTree.documentElement
    name=domain.getElementsByTagName("domain-version")[0]
    print" %s" % name.childNodes[0].data
    adminservername=domain.getElementsByTagName("admin-server-name")[0]
    print " %s" % adminservername.childNodes[0].data
    listenaddress=domain.getElementsByTagName("listen-address")[0]
    print " %s" % listenaddress.childNodes[0].data
    administrationport=domain.getElementsByTagName("administration-port")[0]
    print " %s" % administrationport.childNodes[0].data

for argument in sys.argv[1:] :
    parse_file(argument)

现在您可以运行具有多个文件名的脚本

yourscript.py filename1 filename2

【讨论】:

  • 谢谢你!请帮助我使用上述格式的方式。config.xml 文件包含 和许多 代码应该能够打印 只有在 in 等于 无法为此形成正确的条件
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 2012-07-08
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多