-1

同様の要素を持つ複数の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
4

1 に答える 1

0

コードを機能させて、すべてのファイルに対して呼び出します。

#!/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

于 2013-10-28T11:46:25.323 に答える