2016-05-25 17 views
0

Pythonを使用してXMLファイルを解析しようとしています。私のファイルは、以下に類似した構造を持っていますPython - XML解析 - 同じ要素の異なる子孫の値へのアクセス

<dataset> 
    <dataTable id = 123> 
     <name> Name1 </name> 
     <attributeList> 
      <attribute id = 1> 
       <measurement> 
        <textDomain> 
        <definition>User defined. </definition> 
        </textDomain> 
       </measurement> 
      </attribute> 
      <attribute id = 2> 
       <measurement> 
        <dateTime> 
        <formatString>MM-YYYY </formatString> 
        </dateTime> 
       </measurement> 
      </attribute> 
     </attributeList> 
</dataTable> 
<dataTable id = 456> 
    <name> Name8 </name> 
    <attributeList> 
     <attribute id = 3> 
      <measurement> 
       <unit> 
        <standardUnit>degree</standardUnit> 
       </unit> 
      </measurement> 
     </attribute> 
    </attributeList> 
</dataTable> 
</dataset> 

私は<measurement>タグ内のテキスト(「ユーザー定義。」、「MM-YYYY」、「度」)を抽出したいです。 <measurement>タグにはそれぞれ<attribute>の子孫があります。この場合、どのようにテキストを抽出すればよいですか? ありがとうございます!あなたを与える

import lxml.etree as et 

xml = et.parse("in.xml") 

print(xml.xpath("//attributeList//measurement/*/*/text()")) 

答えて

0

あなたは測定タグとその子の子の子を取得するには、ワイルドカードを使用することができます

['User defined.', 'MM-YYYY ', 'degree'] 

あなたが明示的に引上げ可能性があり最初の子:

xml.xpath("//attributeList//measurement/*[1]/*[1]/text()") 

実際にはありますが1人の子供だけがそれを差別することはありません。

+0

ありがとう、パドレイク! – helloworld

+0

いいえ、あなたは大歓迎です。 –