> 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