2017-08-20 9 views
1

XMLファイルからデータを読み込み、CSVに書き込むための小さなプログラムを作成します。私は通常要素ツリーで作業します。xml要素の属性に<!..>を付けてアクセス

XMLファイルには、携帯電話向けのアプリケーションにその起源を持っているし、いつものようになります。

<waypoint><name><![CDATA[POI 2017-07-03 09:37:11nass]]></name> 
<coord lat="47.220430" lon="8.951071"/></waypoint> 

私はCOORDルートとその内容(経度と緯度)にアクセスするには問題ありません。しかし、どのようにして名前の情報にアクセスできますか:[CDATA[POI 2017-07-03 09:37:11nass]]

私のコードは、これまでのようになります。

for poi in POIS: 
    tree = etree.parse(rootwayp + poi) 
    root = tree.getroot() 
    for child in root: 
     for childchild in child: 
      print(childchild.tag, ':', childchild.attrib) 

私はブラケットがある情報が含まれていないとして、名前、コンテンツのための別の読み取りメソッドを実装する必要があると思います。私は名前の子孫として情報にアクセスしようとしましたが、これはうまくいきません(大括弧内の!のためかもしれません)。 <!...>に平均?

答えて

0

<![CDATA[...]]>あなたはあなたが必要な詳細情報を抽出するために、次のセレクタを使用することができますmarked section

特別です:

root = tree.getroot() 

print(root.find('name').text) 
print(root.find('coord').attrib.get('lat','n/a')) 
print(root.find('coord').attrib.get('lon','n/a')) 

# Output 
POI 2017-07-03 09:37:11nass 
47.220430 
8.951071 

lxmlのを使用すると、here is some doc about.

、全体CDATAセクションを抽出することができます
関連する問題