【发布时间】:2014-10-23 08:19:20
【问题描述】:
我有一种情况,我想在该位置添加一个特定元素,如果给定位置已经存在则更新。例如:
<items>
<productid />
<product_details>
<entry>
<key>?</key>
<value>?</value>
</entry>
</product_details>
</items>
现在对前任说:我将位置作为 1 传递,并希望将值添加到 Key 和 Value,考虑
parent = product_details
position = 1
key = ProductName
value = Maggi
然后它应该更新 xml,因为位置 1 已经有条目/键和条目/值。即,
<items>
<productid />
<product_details>
<entry>
<key>ProductName</key>
<value>Maggi</value>
</entry>
</product_details>
</items>
如果我将位置传递为 2,那么它应该是:
<items>
<productid />
<product_details>
<entry>
<key>?</key>
<value>?</value>
</entry>
<entry>
<key>ProductName</key>
<value>Maggi</value>
</entry>
</product_details>
</items>
编辑:到目前为止,我诚实地尝试的是在该位置插入。由于我对 Python 很陌生,所以我对如何实现这一点有点困惑。下面的代码是我从 SO 得到的稍微修改的版本。例如:
def to_xml(parent, xpath, value, index):
nodes = parent.xpath(xpath)
if nodes:
node = nodes[0]
else:
parts = xpath.split('/')
p = parent
for part in parts:
nodes = p.xpath(part)
if not nodes:
n = etree.XML("<%s/>" % part)
p.append(n)
p = n
else:
p = nodes[0]
node = p
node.text = str(value)
【问题讨论】:
-
您忘记包含您尝试过的 Python 代码。
-
@Tichodroma,添加了我尝试过的代码,但不确定这是否会有所帮助。我完全不确定如何实现这一目标。
标签: python python-2.7 lxml