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”后插入,而不是我想定义的那个。
无法重现。请发布[mcve]。我在你的代码片段中添加的尝试将数据放在正确的位置。 –