2017-09-06 6 views
0

Python beginner here。 私はminidomを使用して、XMLファイルの構造を解析しようとしています。Python minidomはXMLからテキストを抽出します

... 
    <Node Precode="1"> 
     <Text Id="9">sometext 1</Text> 
    </Node> 
... 

私が(stackoverflowのと私のニーズに適応には見られない私自身のデザインの、)再帰関数を使用して、リストにすべてのノード要素を追加しようとしています:XMLの構造は、このようなものです。どのように私は「sometext」テキストを抽出し、list_to_writeリストの要素として追加することができます

from xml.dom import minidom 
list_to_write=[] 
def parse_node(root): 
    if root.childNodes: 
     for node in root.childNodes: 
      if node.nodeType == node.ELEMENT_NODE: 
       new_node = [node.tagName,node.parentNode.tagName,node.getAttribute('Precode'),node.attributes.items()] 

       list_to_write.append(new_node) 

       parse_node(node) 
    return list_to_write 

:現在の状況は、このですか?

+0

エキス"sometext"何をするには?リストになるには? – aircraft

+0

list_to_writeの要素として –

答えて

1

私はあなたがnodes.xml持っていると仮定します。

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <Node > 
     <Text Id="9">sometext 1</Text> 
    </Node> 
    <Node > 
     <Text Id="9">sometext 2</Text> 
    </Node> 
    <Node > 
     <Text Id="9">sometext 3</Text> 
    </Node> 
    <Node > 
     <Text Id="9">sometext 4</Text> 
    </Node> 
    <Node > 
     <Text Id="9">sometext 5</Text> 
    </Node> 
    <Node> 
     <Text Id="9">sometext 6</Text> 
    </Node> 
    <Node > 
     <Text Id="9">sometext 7</Text> 
    </Node> 
</root> 

をそして、あなたがテキストを取得するには以下のコードを実行できます。

from xml.dom import minidom 

list_to_write=[] 
def parse_node(): 
    doc = minidom.parse("nodes.xml") 
    root = doc.documentElement 

    nodes = root.getElementsByTagName("Node") 
    print doc 
    for node in nodes: 
     list_to_write.append(node.getElementsByTagName("Text")[0].childNodes[0].nodeValue) 

parse_node() 

print (list_to_write) 

結果は次のとおりです。

[u'sometext 1', u'sometext 2', u'sometext 3', u'sometext 4', u'sometext 5', u'sometext 6', u'sometext 7'] 
関連する問題