0

XML ファイル test.xml には次のタグが含まれています

<?xml version="1.0" encoding="ISO-8859-1"?>
<AppName>
    <out>This is a sample output with <test>default</test> text </out>
<AppName>

私は今まで次のことを行うpythonコードを書いています:

from xml.dom.minidom import parseString
list = {'test':'example'}
file = open('test.xml','r')
data = file.read()
file.close()
dom = parseString(data)
if (len(dom.getElementsByTagName('out'))!=0):
    xmlTag = dom.getElementsByTagName('out')[0].toxml()
    out = xmlTag.replace('<out>','').replace('</out>','')
    print out

次のプログラムの出力はThis is a sample output with <test>default</test> text

list = {'test':'example'}また、定義済みのリストがあることに気付くでしょう。

リストにリストされているタグがあるかどうかを確認したいのですが、対応する値に置き換えられます。それ以外の場合はデフォルト値です。

この場合、出力は次のようになります。

This is a sample output with example text

4

1 に答える 1

1

これは多かれ少なかれあなたが望むことをします:

from xml.dom.minidom import parseString, getDOMImplementation

test_xml = '''<?xml version="1.0" encoding="ISO-8859-1"?>
<AppName>
    <out>This is a sample output with <test>default</test> text </out>
</AppName>'''

replacements = {'test':'example'}
dom = parseString(test_xml)
if (len(dom.getElementsByTagName('out'))!=0):
    xmlTag = dom.getElementsByTagName('out')[0]
    children =  xmlTag.childNodes
    text = ""
    for c in children:
        if c.nodeType == c.TEXT_NODE:
            text += c.data
        else:
            if c.nodeName in replacements.keys():
                text += replacements[c.nodeName]
            else: # not text, nor a listed tag
                text += c.toxml()
    print text

replacementsではなくを使用したことに注意してくださいlist。Python 用語では、これはリストではなく辞書であるため、紛らわしい名前です。これは組み込み関数でもあるため、名前として使用することは避けてください。

テキストだけでなく dom オブジェクトが必要な場合は、別のアプローチを取る必要があります。

于 2013-02-15T19:22:32.667 に答える