<inboundContextData>
<items>
<item>
<key>a</key>
<value>One</value>
</item>
<item>
<key>b</key>
<value>Two</value>
</item>
<item>
<key>c</key>
<value>Three</value>
</item>
</items>
</inboundContextData>
我必须使用python脚本用其他数字替换值One,Two和3。请建议需要做什么
答案 0 :(得分:0)
要处理XML文档,可以使用BeautifulSoup
包。示例:
data = """
<inboundContextData>
<items>
<item>
<key>a</key>
<value>One</value>
</item>
<item>
<key>b</key>
<value>Two</value>
</item>
<item>
<key>c</key>
<value>Three</value>
</item>
</items>"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'xml')
my_new_value = 'XXX'
for value in soup.select('items > item > value'):
value.clear()
value.append(my_new_value)
print(soup.prettify())
输出:
<?xml version="1.0" encoding="utf-8"?>
<inboundContextData>
<items>
<item>
<key>
a
</key>
<value>
XXX
</value>
</item>
<item>
<key>
b
</key>
<value>
XXX
</value>
</item>
<item>
<key>
c
</key>
<value>
XXX
</value>
</item>
</items>
</inboundContextData>
答案 1 :(得分:0)
使用ElementTree
演示:
import xml.etree.ElementTree
et = xml.etree.ElementTree.parse(filename)
root = et.getroot()
for i in root.findall("item"):
i.find("value").text = "NewNumber"
et.write(filename)
输出:
<items>
<item>
<key>a</key>
<value>NewNumber</value>
</item>
<item>
<key>b</key>
<value>NewNumber</value>
</item>
<item>
<key>c</key>
<value>NewNumber</value>
</item>
</items>
答案 2 :(得分:0)
您可以使用ElementTree
。这样,您可以将xml加载到多维列表中,在其中可以分层访问元素。例如,从root开始,您的xml可以看到:
<inboundContextData> <- root
<items> root <- 0
<item> root <- 0 <- 0
<key>a</key>
<value>One</value> root <-0 <-0<-1
</item>
<item>
<key>b</key>
<value>Two</value>
</item>
<item>
<key>c</key>
<value>Three</value>
</item>
</items>
因此,要更改第一个“值”,您可以这样做:
from xml.etree import ElementTree as ET
xml = ET.parse('testfile.xml')
root = xml.getroot()
root[0][0][1].text = 'Five'
xml.write('testfile.xml')