> I'm looking to search an entire XML file for specific text and replace that 
> text, while maintaining the structure of the XML file. The text occurs within 
> multiple nodes throughout the file.
> I basically need to replace every occurrence C:\Program Files with C:\Program 
> Files (x86), regardless of location. For example, that text appears within:
> <URL>C:\Program Files\\Map Data\Road_Centerlines.shp</URL>
> and also within:
> <RoutingIndexPathName>C:\Program 
> Files\Templates\RoadNetwork.rtx</RoutingIndexPathName>
> ...among others.
> I've tried some non-python methods and they all ruined the XML structure. 
> I've been Google searching all day and can only seem to find solutions that 
> look for a specific node and replace the whole string between the tags.
> I've been looking at using minidom to achieve this but I just can't seem to 
> figure out the right method.
> My end goal, once I have working code, is to compile an exe that can work on 
> machines without python, allowing a user can click in order to perform the 
> XML modification.

Is it as simple as this?

$ cat my.xml
<URL>C:\Program Files\\Map Data\Road_Centerlines.shp</URL>
and also within:
<RoutingIndexPathName>C:\Program
Files\Templates\RoadNetwork.rtx</RoutingIndexPathName>

$ python3
Python 3.2.3 (default, May  3 2012, 15:51:42)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for line in open("my.xml"):
...     print(line.replace("C:\Program Files", "C:\Program Files
(x86)"), end="")
...
<URL>C:\Program Files (x86)\\Map Data\Road_Centerlines.shp</URL>
and also within:
<RoutingIndexPathName>C:\Program Files
(x86)\Templates\RoadNetwork.rtx</RoutingIndexPathName>

This solution assumes that you have no tags containing the string
"C:\Program Files".
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to