특정 위치에 특정 요소를 추가하고 주어진 위치에 이미있는 경우 업데이트하려는 상황이 있습니다. 예 :lxml python을 사용하여 위치에 요소 추가/업데이트
<items>
<productid />
<product_details>
<entry>
<key>?</key>
<value>?</value>
</entry>
</product_details>
</items>
지금 전직 말할 : 나는 1로 위치를 전달하고 키와 값에 값을 추가하려면,
parent = product_details
position = 1
key = ProductName
value = Maggi
그런 다음이 XML을 업데이트해야합니다 고려 항목이 있기 때문에/& 위치/항목의 값/키가 이미 있습니다. 나는 위치로 2를 전달하는 경우 즉,
<items>
<productid />
<product_details>
<entry>
<key>ProductName</key>
<value>Maggi</value>
</entry>
</product_details>
</items>
은 다음과 같아야합니다
<items>
<productid />
<product_details>
<entry>
<key>?</key>
<value>?</value>
</entry>
<entry>
<key>ProductName</key>
<value>Maggi</value>
</entry>
</product_details>
</items>
편집 : 그래서 지금까지 내가 정직하게 노력 어떤 위치에 삽입된다. 필자는 파이썬을 처음 접했기 때문에 이것을 달성하는 방법에 대해 혼란스러워합니다. 아래의 코드는 내가 가지고있는 것의 약간 수정 된 버전입니다. 예 :
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)
시도한 파이썬 코드를 포함하는 것을 잊었습니다. –
@Tichodroma, 내가 시도한 코드를 추가했지만 도움이 될지 확신하지 못했습니다. 나는 이것을 달성하는 방법에 대해 완전히 확신하지 못합니다. –