2016-08-01 8 views
0

私は現在、いくつかのパノラマキャプチャを行っているプログラムに入れるためにPythonでいくつかのXMLコードを複製しようとしています。最終的には、キャプチャディテールのXMLファイルをエクスポートして、さまざまなパノラマキャプチャプログラムの1つに簡単にインポートできるようにします。Pythonクエリのxmlサブ要素

私はかなり新しいですが、xml.etree.ElementTreeを使用していますが、これはルート宣言とヘッダーとサブヘッダーのような情報を設定できますが、最初は2つ(例えば、GPS)を設定することができ、第2の方法は、サブ要素が複数の値(例えば、モザイク/オーバラップ最小値)を有することができる方法である。

私は以下の要素を持っていました。

root = etree.Element("papywizard") 
root.set("version", "c") 
header = etree.SubElement(root,"header") 
general = etree.SubElement(header, "general") 
title = etree.SubElement(general,"title") 

私はその後、私はtitle.text("Test123")ような何かを行うことができますが、これは動作しませんでしたと思いました。私が複製しようとしている完全なXMLは、以下の通りです。サブ要素タグ内にテキストを設定する方法について、誰かが正しい方向を指すことができるのですか?そして、それを超える数のタグを1つのサブ要素に集約できますか?

多くのありがとうございます!

<?xml version="1.0" encoding="utf-8"?> 
<papywizard version="c"> 
    <header> 
     <general> 
      <title> 
       Test Capture 1 
      </title> 
      <gps> 
       37.8022697,-122.4056749 
      </gps> 
      <comment> 
       Add your comments here 
      </comment> 
     </general> 
     <shooting mode="mosaic"> 
      <headOrientation> 
       up 
      </headOrientation> 
      <cameraOrientation> 
       landscape 
      </cameraOrientation> 
      <stabilizationDelay> 
       5.0 
      </stabilizationDelay> 
      <counter> 
       001 
      </counter> 
      <startTime> 
       2014-02-23_13h59m01s 
      </startTime> 
      <endTime> 
       2014-02-23_13h53m33s 
      </endTime> 
     </shooting> 
     <camera> 
      <timeValue> 
       5.0 
      </timeValue> 
      <bracketing nbPicts="1"/> 
      <sensor coef ="4.74" ratio="4:3"/> 
     </camera> 
     <lens type="rectilinear"> 
      <focal> 
       12.7 
      </focal> 
     </lens> 
     <mosaic> 
      <nbPicts pitch="5" yaw="10"/> 
      <overlap minimum="0.25" pitch="0.25" yaw="0.25"/> 
     </mosaic> 
    </header> 
    <shoot> 
     <pict bracket="1" id="1"> 
      <time> 
       2014-02-23_13h59m01s 
      </time> 
      <position pitch="37.96" roll="0.0" yaw="-99.96"/> 
     </pict> 
     <pict bracket="1" id="2"> 
      <time> 
       2014-02-23_13h59m01s 
      </time> 
      <position pitch="18.98" roll="0.0" yaw="-99.96"/> 
     </pict> 
     <pict bracket="1" id="3"> 
      <time> 
       2014-02-23_13h59m01s 
      </time> 
      <position pitch="0.00" roll="0.0" yaw="-99.96"/> 
     </pict> 
    </shoot> 
</papywizard> 

答えて

2
setコマンドでそれを行うことができます
import xml.etree.ElementTree as ET 

root = ET.Element("papywizard") 
root.set("version", "c") 
header = ET.SubElement(root,"header") 
general = ET.SubElement(header, "general") 
title = ET.SubElement(general,"title") 
title.text = str('Test123') # This is how you set it 

tree = ET.ElementTree(root) # This step will form a tree 
tree.write('expected.xml') # This step will save the xml file. 
1

次のコマンドを使用する必要があります。

title.text = "some text" 
1

テキストノードと要素ノードは、ノードの2種類であり、XML要素ノードは、任意のテキストおよび/または要素の子ノードの数に制限はありません注文。あなたはノードにテキストを追加したい場合は

、あなたは.text属性

title.text = "Sometext" 

でそれを行うことができますが、属性を追加したい場合は、

title.set('Attribute name', 'Attributevalue') 
+0

すべての皆さん、お手数をおかけしていただきありがとうございます。最も高く評価されました! – user1829564

関連する問題