[XML-SIG] Modify node attributes in XML file while parsing
Abhishek Kane
abhishek.kane at gmail.com
Thu Sep 17 09:47:40 CEST 2009
*<?xml version='1.0'?>
<main_tag>
<service name='abc' version='1'>
<instance name='default' value='false'/>
</service>
<service name='xyz' version='2'>
<instance name='default' value='false'/>
</service>
</main_tag>
*
is how the XML file looks like. I want to modify the *value *of
*instance *based
on the *service name*.
So if i search for *abc* service & modify instance value like follows :
*import sys, logging, traceback
from xml.dom import minidom
data_file = "/tmp/data.xml"
def main():
try:
xmldoc = minidom.parse(data_file)
except IOError:
print "err"
sys.exit(1)
start = xmldoc.firstChild
for element in xmldoc.getElementsByTagName("service"):
service = element.getAttribute("name")
print service
if service == "abc":
for instance in element.childNodes:
if instance.nodeType == 1:
print instance.getAttribute("value")
instance.setAttribute("value", "true")
print instance.getAttribute("value")
if __name__ == "__main__":
logging.basicConfig(filename=log_file,level=logging.DEBUG)
main()
*
The first print gives *false* & later one gives *true*. But the
*data.xml*remains unchanged. How can I modify the node in data.xml?
Thanks,
Abhishek
On Wed, Sep 16, 2009 at 9:47 PM, Josh English <joshua.r.english at gmail.com>wrote:
> If you are just searching for XML nodes, you are searching. If you are
> interpreting them into something new, you are parsing.
>
> If you want to change an attribute, parse the XML file and make changes
> there.
>
> Either that, or read the node attribute that you are given, make the
> changes you need, but don't bother with writing a new XML file.
>
> Perhaps a sample of what you are trying to do would help up see the
> solution.
>
> On 9/16/09, Abhishek Kane <abhishek.kane at gmail.com> wrote:
> > Hi Guys,
> >
> > I got a bit idea about parsing XML file from online search. I need to
> modify
> > node attributes in an XML file while I read it. I could read node
> > attributes; but when I modify them using setAttribute, the local copy of
> > that node gets changed.
> > Is there any way to directly modify the node attributes in XML file or
> shall
> > I just create another XML file where I will create nodes as I go through
> the
> > nodes in old XML file?
> >
> > Thanks,
> > Abhishek
> >
>
>
> --
> Josh English
> Joshua.R.English at gmail.com
> http://joshenglish.livejournal.com
>
--
No defeat is final; until u stop fighting.
- AGK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/xml-sig/attachments/20090917/a4b22337/attachment.htm>
More information about the XML-SIG
mailing list