2017-09-29 90 views
1

我有一個plist,我用lxml解析過。感謝這裏用戶的幫助,我有一整套我想要添加的項目,格式正確,並且可以添加它們。我現在遇到的麻煩是使用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會是什麼樣子:

<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> 

我一直在使用XPath和運行的嘗試。

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]。我在你的代碼片段中添加的嘗試將數據放在正確的位置。 –

回答