【发布时间】:2020-08-12 16:03:46
【问题描述】:
例如
<managedObject class="New" distName="MB-85404/TB-85404/ST-4/a" version="xL20A_1911_002" operation="open">
<p name="a">320ms</p>
<p name="b">enabled</p>
<p name="c">640ms</p>
<p name="d">320ms</p>
<p name="e">640ms</p>
<p name="f">1280ms</p>
<p name="g">6</p>
</managedObject>
<managedObject class="new" distName="AL-76867/MB-85404/TB-85404/ST-4/b" version="xL20A_1911_002" operation="open">
<p name="h">320ms</p>
<p name="i">enabled</p>
<p name="j">640ms</p>
<p name="k">320ms</p>
<p name="l">640ms</p>
<p name="a">1280ms</p>
<p name="l">6</p>
</managedObject>
<managedObject class="New" distName="MB-85404/TB-85404/ST-4/c" version="xL20A_1911_002" operation="open">
<p name="a">320ms</p>
<p name="p">enabled</p>
<p name="q">640ms</p>
<p name="r">320ms</p>
<p name="s">640ms</p>
<p name="t">1280ms</p>
<p name="u">6</p>
</managedObject>
在此示例中,首先我想将(distName="MB-85404/TB-85404/ST-4/[a or b or c]") 更新为(distName="MB-85409/TB-85409/ST-4/[a or b or c]")
对整个 XML 文件执行此操作后。
完成此操作后,我想更新标签name="a" 的值<managedObject class="New" distName="MB-85409/TB-85409/ST-4/[a or b or c] >
我该怎么做呢,我有一个超过 40000 行的 XML 文件。
编辑1
with open("C:/files/abcd.xml", "w+") as file:
xml_data = file.read()
xml_data.replace("85409","85904")
file.write("outPuta.xml")
EDIT2
soup = bs(content,"xml")
loc = re.compile(r'[A-Z]+-+[0-9]+/+SMOD+-+[1-9]')
for i in soup.find_all('managedObject', distName=loc):
locat=i.find('p',{'name':'moduleLocation'})
locat.string="3444 South texas"
通过此代码,我试图找到与regex loc 匹配的distname,在managedObject 内部,我试图找到标签<p name="moduleLocation" 4444 New York>,我想将"4444 New York" 更新为"3444 South texas",这是给我在下面提到了错误
locat.string="3444 South texas"
AttributeError: 'NoneType' object has no attribute 'string'
【问题讨论】:
标签: python-3.x xml beautifulsoup elementtree