Ritz
Ritz

Reputation: 1253

how to get value of an xml element not directly under root

I am trying to parse an xml and get the value of dir_path as below,however I dont seem to get the desired output,whats wrong here and how to fix it?

input.xml

<?xml version="1.0" ?>
    <data>
    <software>
      <name>xyz</name>
      <role>xyz</role>
      <future>unknown</future> 
    </software>
    <software>
      <name>abc</name>
      <role>abc</role>
      <future>clear</future>
      <dir_path cmm_root_path_var="COMP_softwareROOT">\\location\software\INR\</dir_path>
      <loadit reduced="true">
        <RW>yes</RW>
        <readonly>R/</readonly>
      </loadit>
      <upload reduced="true">
      </upload>
    </software>
    <software>
      <name>def</name>
      <role>def</role>
      <future>clear</future>
      <dir_path cmm_root_path_var="COMP2_softwareROOT">\\location1\software\INR\</dir_path>
      <loadit reduced="true">
        <RW>yes</RW>
        <readonly>R/</readonly>
      </loadit>
      <upload reduced="true">
      </upload>
    </software>
    </data>

CODE:-

tree = ET.parse(input.xml)
root = tree.getroot()
dir_path = root.find(".//dir_path")
print dir_path.text

OUTPUT:-

.\

EXPECTED OUTPUT:-

\\location\software\INR\

Upvotes: 0

Views: 65

Answers (1)

chapelo
chapelo

Reputation: 2562

Try the following:

from xml.etree import ElementTree as ET

tree = ET.parse('filename.xml')

item = tree.find('software/[name="abc"]/dir_path')
print(item.text if item is not None else None)

Upvotes: 1

Related Questions