2017-09-29 6 views
1

私はlxmlで解析したplistを持っています。ここのユーザーからの助けを借りて、私は追加したいアイテムを正しいフォーマットで持っていて、それらを追加することができます。私が今問題にしているのは、2つの異なるレベルのXMLファイルを使用して、次のような場合は、 "書籍"と "13"ではなく、 "ノート"と "13"の両方を使用するセットで "WUT"にテキストを挿入するにはどうすればよいですか?それとも別の方法ですか?2レベルのXMLを使用してノードを検索し、文字列を追加します

<root> 
    <key>Title</key> 
    <dict> 
    <key>Set</key> 
    <dict> 
     <key>Notes</key> 
     <dict> 
     <key>Tester</key> 
     <array> 
      <dict> 
      <key>13</key> 
      <dict> 
       <key>Param</key> 
       <array> 
       <string>WUT</string> 
       </array> 
      </dict> 
      <key>18</key> 
      <dict> 
       <key>Param</key> 
       <array> 
       <string>WUT</string> 
       </array> 
      </dict> 
      </dict> 
     </array> 
     </dict> 
    </dict> 
    <dict> 
     <key>Books</key> 
     <dict> 
     <key>Tester</key> 
     <array> 
      <dict> 
      <key>13</key> 
      <dict> 
       <key>Param</key> 
       <array> 
       <string>WUT</string> 
       </array> 
      </dict> 
      </dict> 
     </array> 
     </dict> 
    </dict> 
    </dict> 
</root> 

だから、理想的に私の新しいplistのは、次のようになります。私は、XPathやランニングを使用してみましたが

<root> 
    <key>Title</key> 
    <dict> 
    <key>Set</key> 
    <dict> 
     <key>Notes</key> 
     <dict> 
     <key>Tester</key> 
     <array> 
      <dict> 
      <key>13</key> 
      <dict> 
       <key>Param</key> 
       <array> 
       <string>1</string> 
       <string>2</string> 
       <string>3</string> 
       <string>4</string> 
       <string>5</string> 
       </array> 
      </dict> 
      <key>18</key> 
      <dict> 
       <key>Param</key> 
       <array> 
       <string>WUT</string> 
       </array> 
      </dict> 
      </dict> 
     </array> 
     </dict> 
    </dict> 
    <dict> 
     <key>Books</key> 
     <dict> 
     <key>Tester</key> 
     <array> 
      <dict> 
      <key>13</key> 
      <dict> 
       <key>Param</key> 
       <array> 
       <string>WUT</string> 
       </array> 
      </dict> 
      </dict> 
     </array> 
     </dict> 
    </dict> 
    </dict> 
</root> 

for plist_title in tree.xpath('//dict[key="Notes"][1]') 
    for plist_tester in plist_title.xpath('//dict[key="13"][1]') 
     plist_tester.insert(1,myData) 

しかし、データは最後の "13"の後に挿入され、定義したいデータではありません。

+0

再生できません。 [mcve]を投稿してください。あなたのコードスニペットの周りに私の試みが追加され、正しい場所にデータが置かれました。 –

答えて

関連する問題