Making a small change to a large XML document

Shriphani shriphanip at gmail.com
Tue Sep 25 02:05:15 EDT 2007


Dan Stromberg wrote:
> Say I want to take an existing XML document, and change the value="9997"
> and value="9998" to two different numbers, without changing any of the
> rest of the document - not even changing comments or indentation, if
> avoidable.
>
> What's the best way of doing it in python?
>
>   <bean id="cs" class="c.d.q.s.C">
>     <property name="p" value="9997"/>
>     <property name="mP" value="9998"/>
>     <property name="g" value="cs"/>
>     <property name="e" value="t"/>
>   </bean>
>
> My .xml file is full of such beans.
>
> I've played around with minidom a little in the past, and I'm targetting
> python 2.5.1.
>
> Thanks!

Hello,
I hope this works:

#!/usr/bin/python

from BeautifulSoup import BeautifulStoneSoup
#If the XML you provided is in a file named 'problem'
xml_struc = open('problem','r')
soup = BeautifulStoneSoup(xml_struc)
list_of_tags = soup.findAll('property')
for tag in list_of_tags:
    if tag['value'] == "9998":
        tag['value'] = "9999" #or whatever number you like
soup_str = str(soup)
f = open('output', 'w')
f.write(soup_str)
f.close()
xml_struc.close()




More information about the Python-list mailing list