By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,908 Members | 1,860 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,908 IT Pros & Developers. It's quick & easy.

replacing string in xml file

P: n/a
Hi,
I need to replace a string in xml file with something else.Ex

- <SERVICEPARAMETER id="_775" Semantics="subfunction" DDORef="_54">
<SHORTNAME>rate</SHORTNAME>
<LONGNAME>rate</LONGNAME>
<VALUE role="constant" DataType="unsigned" value="1" />
<BYTEPOSITION role="position" BytePos="1" />
</SERVICEPARAMETER>
- <SERVICEPARAMETER id="_776" Semantics="localId" DDORef="_54">

Here i have opened an xml
file(small part is pasted here).I want to replace the word 'localId'
with 'dataPackageID' wherever it comes in xml file.I tried this but
didnt work:

import sys

file_input = raw_input("Enter The ODX File Path:")
input_xml = open(file_input,'r')
input_xml.replace('localId','dataPackageId')
This gives error ---AttributeError: 'file'
object has no attribute 'replace'
Can someone help me .
Thanks

May 8 '07 #1
Share this Question
Share on Google+
6 Replies


P: n/a
sa**********@gmail.com schrieb:
Hi,
I need to replace a string in xml file with something else.Ex

- <SERVICEPARAMETER id="_775" Semantics="subfunction" DDORef="_54">
<SHORTNAME>rate</SHORTNAME>
<LONGNAME>rate</LONGNAME>
<VALUE role="constant" DataType="unsigned" value="1" />
<BYTEPOSITION role="position" BytePos="1" />
</SERVICEPARAMETER>
- <SERVICEPARAMETER id="_776" Semantics="localId" DDORef="_54">

Here i have opened an xml
file(small part is pasted here).I want to replace the word 'localId'
with 'dataPackageID' wherever it comes in xml file.I tried this but
didnt work:

import sys

file_input = raw_input("Enter The ODX File Path:")
input_xml = open(file_input,'r')
This should say

input_xml = open(file_input,'r').read()
input_xml.replace('localId','dataPackageId')
This gives error ---AttributeError: 'file'
object has no attribute 'replace'
Can someone help me .
Thanks
Stefan
May 8 '07 #2

P: n/a
On Tue, 08 May 2007 13:30:59 +0200, Stefan Behnel wrote
sa**********@gmail.com schrieb:
[...]
file_input = raw_input("Enter The ODX File Path:")
input_xml = open(file_input,'r')

This should say

input_xml = open(file_input,'r').read()
....and then it still won't work because the OP's replace call assumes in-place
operation despite the fact that strings aren't mutable.

The OP needs something following this pattern:

input_file = open(filename)
xmlcontents = input_file.read()
input_file.close()
xmlcontents = xmlcontents.replace("spam", "eggs")
output_file = open(filename,"w")
output_file.write(xmlcontents)
output_file.close()

For extra credit, use a different file name for writing out the result and
rename the file after it's written. That way you don't lose your file contents
if a meteor hits your CPU just after it started to overwrite the file.

Best regards,

--
Carsten Haese
http://informixdb.sourceforge.net
May 8 '07 #3

P: n/a
On May 8, 4:30 pm, Stefan Behnel <stefan.behnel-n05...@web.dewrote:
saif.shak...@gmail.com schrieb:


Hi,
I need to replace a string in xml file with something else.Ex
- <SERVICEPARAMETER id="_775" Semantics="subfunction" DDORef="_54">
<SHORTNAME>rate</SHORTNAME>
<LONGNAME>rate</LONGNAME>
<VALUE role="constant" DataType="unsigned" value="1" />
<BYTEPOSITION role="position" BytePos="1" />
</SERVICEPARAMETER>
- <SERVICEPARAMETER id="_776" Semantics="localId" DDORef="_54">
Here i have opened an xml
file(small part is pasted here).I want to replace the word 'localId'
with 'dataPackageID' wherever it comes in xml file.I tried this but
didnt work:
import sys
file_input = raw_input("Enter The ODX File Path:")
input_xml = open(file_input,'r')

This should say

input_xml = open(file_input,'r').read()
input_xml.replace('localId','dataPackageId')
This gives error ---AttributeError: 'file'
object has no attribute 'replace'
Can someone help me .
Thanks

Stefan- Hide quoted text -

- Show quoted text -
There is no error now,but the string is not being replaced,It remains
the same,should we save the opened file or something

May 8 '07 #4

P: n/a
On May 8, 4:46 pm, saif.shak...@gmail.com wrote:
On May 8, 4:30 pm, Stefan Behnel <stefan.behnel-n05...@web.dewrote:


saif.shak...@gmail.com schrieb:
Hi,
I need to replace a string in xml file with something else.Ex
- <SERVICEPARAMETER id="_775" Semantics="subfunction" DDORef="_54">
<SHORTNAME>rate</SHORTNAME>
<LONGNAME>rate</LONGNAME>
<VALUE role="constant" DataType="unsigned" value="1" />
<BYTEPOSITION role="position" BytePos="1" />
</SERVICEPARAMETER>
- <SERVICEPARAMETER id="_776" Semantics="localId" DDORef="_54">
Here i have opened an xml
file(small part is pasted here).I want to replace the word 'localId'
with 'dataPackageID' wherever it comes in xml file.I tried this but
didnt work:
import sys
file_input = raw_input("Enter The ODX File Path:")
input_xml = open(file_input,'r')
This should say
input_xml = open(file_input,'r').read()
input_xml.replace('localId','dataPackageId')
This gives error ---AttributeError: 'file'
object has no attribute 'replace'
Can someone help me .
Thanks
Stefan- Hide quoted text -
- Show quoted text -

There is no error now,but the string is not being replaced,It remains
the same,should we save the opened file or something- Hide quoted text -

- Show quoted text -
HI,
Thanks for the reply.that seems to work,but i was doing this
so as to attach it to a bigger code where it will be utilised before a
parsing.

#Input file and Output file path from user

file_input = raw_input("Enter The ODX File Path:")

(shortname,ext)=os.path.splitext(file_input)
f_open_out=shortname+".ini"
log=shortname+".xls"
test_file=shortname+"testxml.xml"

saveout = sys.stdout

input_xml = open(file_input,'r')
xmlcont=input_xml.read()
xmlcont=xmlcont.replace('localId','dataPackageId')
output_file = open(test_file,"w")
output_file.write(xmlcont)
output_file.close()

f_open=open(f_open_out, 'w')
logfile=open(log,"w")

sys.stdout = f_open

#Parse the input file,and check for correct ODX version

xmldoc = minidom.parse(input_xml)
I am opening 2 more files in addition to the file
where the new xml goes.One file is written using the sys.stdout
command as most of the output has to go there printing takes place in
many places (so cant use f_open.write) each time.
When i attach the part of replacing the string
'localid' in xml file with something else as given above with
xmlcont=xmlcont.replace('localId','dataPackageId')
the code does not run and hangs.Can more than 3 files be opened at a
time .I dotn know what the problem is here.
Thanks

May 9 '07 #5

P: n/a
On May 9, 4:39 pm, saif.shak...@gmail.com wrote:
On May 8, 4:46 pm, saif.shak...@gmail.com wrote:


On May 8, 4:30 pm, Stefan Behnel <stefan.behnel-n05...@web.dewrote:
saif.shak...@gmail.com schrieb:
Hi,
I need to replace a string in xml file with something else.Ex
- <SERVICEPARAMETER id="_775" Semantics="subfunction" DDORef="_54">
<SHORTNAME>rate</SHORTNAME>
<LONGNAME>rate</LONGNAME>
<VALUE role="constant" DataType="unsigned" value="1" />
<BYTEPOSITION role="position" BytePos="1" />
</SERVICEPARAMETER>
- <SERVICEPARAMETER id="_776" Semantics="localId" DDORef="_54">
Here i have opened an xml
file(small part is pasted here).I want to replace the word 'localId'
with 'dataPackageID' wherever it comes in xml file.I tried this but
didnt work:
import sys
file_input = raw_input("Enter The ODX File Path:")
input_xml = open(file_input,'r')
This should say
input_xml = open(file_input,'r').read()
input_xml.replace('localId','dataPackageId')
This gives error ---AttributeError: 'file'
object has no attribute 'replace'
Can someone help me .
Thanks
Stefan- Hide quoted text -
- Show quoted text -
There is no error now,but the string is not being replaced,It remains
the same,should we save the opened file or something- Hide quoted text -
- Show quoted text -

HI,
Thanks for the reply.that seems to work,but i was doing this
so as to attach it to a bigger code where it will be utilised before a
parsing.

#Input file and Output file path from user

file_input = raw_input("Enter The ODX File Path:")

(shortname,ext)=os.path.splitext(file_input)
f_open_out=shortname+".ini"
log=shortname+".xls"
test_file=shortname+"testxml.xml"

saveout = sys.stdout

input_xml = open(file_input,'r')
xmlcont=input_xml.read()
xmlcont=xmlcont.replace('localId','dataPackageId')
output_file = open(test_file,"w")
output_file.write(xmlcont)
output_file.close()

f_open=open(f_open_out, 'w')
logfile=open(log,"w")

sys.stdout = f_open

#Parse the input file,and check for correct ODX version

xmldoc = minidom.parse(input_xml)

I am opening 2 more files in addition to the file
where the new xml goes.One file is written using the sys.stdout
command as most of the output has to go there printing takes place in
many places (so cant use f_open.write) each time.
When i attach the part of replacing the string
'localid' in xml file with something else as given above with
xmlcont=xmlcont.replace('localId','dataPackageId')
the code does not run and hangs.Can more than 3 files be opened at a
time .I dotn know what the problem is here.
Thanks- Hide quoted text -

- Show quoted text -
Hi,
Cna someone help me in this ,or throw some insight .
Thanks

May 10 '07 #6

P: n/a
En Thu, 10 May 2007 01:55:25 -0300, <sa**********@gmail.comescribió:
> I am opening 2 more files in addition to the file
where the new xml goes.One file is written using the sys.stdout
command as most of the output has to go there printing takes place in
many places (so cant use f_open.write) each time.
When i attach the part of replacing the string
'localid' in xml file with something else as given above with
xmlcont=xmlcont.replace('localId','dataPackageId' )
the code does not run and hangs.
What do you mean by "hangs"?
You have replaced stdout - what if the program is prompting the user for
something, and you can't see it? Can you type some text and continue?
>Can more than 3 files be opened at a
time
Sure. The limit actually depends on the OS, but on "normal" circumstances
it's far above 3 files.

--
Gabriel Genellina

May 10 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.