Justin
Justin

Reputation: 83

XML change tag name using Python

Very new to XML and Python. I want to change the tag names of certain elements in an XML document. Here's how the document looks now:

<Company>
   <Employee>
      <SSN>111111111</SSN>
      <Dependent>
          <SSN>222222222</SSN>

I want to change the tag under the Employee to 'EESSN' and leave the tag under the Dependent the same. To look like this.

<Company>
   <Employee>
      <EESSN>111111111</EESSN>
      <Dependent>
          <SSN>222222222</SSN>

The document includes hundreds of companies and thousands of employees both with tens to hundreds of sub elements, so a find and replace option is what I believe I need.

I want to use ElementTree module. The only code I have that is working is the importing the data and writing it to a new file. Thanks for all your help!

Upvotes: 5

Views: 9572

Answers (1)

Daniel Haley
Daniel Haley

Reputation: 52858

If you want to use ElementTree, you can find all SSN elements that are children of Employee and set tag.

Example...

Input (input.xml)

<Company>
    <Employee>
        <SSN>111111111</SSN>
        <Dependent>
            <SSN>222222222</SSN>
        </Dependent>
    </Employee>
</Company>

Python

import xml.etree.ElementTree as ET

tree = ET.parse("input.xml")

for elem in tree.findall("Employee/SSN"):
    elem.tag = "EESSN"

tree.write("output.xml")

Output (output.xml)

<Company>
    <Employee>
        <EESSN>111111111</EESSN>
        <Dependent>
            <SSN>222222222</SSN>
        </Dependent>
    </Employee>
</Company>

Upvotes: 6

Related Questions