Sam
Sam

Reputation: 227

Beautiful Soup parsing an XML file

I am writing a simple Python using Beautiful Soup to parse the data I need out of an xml file. It's working how I need it to, but I have one ask of you guys as I have tried to Google this but can't seem to find what I am looking for.

Sample of XML string:

<ProductAttribute MaintenanceType="C" AttributeID="Attachment Type" PADBAttribute="N" RecordNumber="1" LanguageCode="EN">Clamp-On</ProductAttribute>

I am needing the AttributeID within the ProductAttribute. When I write, the below I am able to grab the value "Clamp-On" but I need AttributeID to tell me what Clamp-On is referencing.

attributes[part.find('PartNumber').get_text()] = [x.get_text() for x in part.find_all('ProductAttribute')]

for key, value in attributes.items():
     for v in value:
     print(v)

Any guidance is appreciated before negative feedback. Thanks!

Upvotes: 2

Views: 3273

Answers (2)

drec4s
drec4s

Reputation: 8077

Simple solution using only lxml library:

from lxml import etree

xml_string = """<ProductAttribute MaintenanceType="C" AttributeID="Attachment Type" PADBAttribute="N" RecordNumber="1" LanguageCode="EN">Clamp-On</ProductAttribute>"""

xml = etree.XML(xml_string)
print(xml.get("AttributeID"))

Output:

Attachment Type

Upvotes: 1

here is how u can get a tag attribute from an xml using BeautifulSoup and lxml,

from bs4 import BeautifulSoup

xml_string = '<ProductAttribute MaintenanceType="C" AttributeID="Attachment Type" PADBAttribute="N" RecordNumber="1" LanguageCode="EN">Clamp-On</ProductAttribute>'

soup = BeautifulSoup(xml_string, 'xml')
tag = soup.ProductAttribute
print(tag['AttributeID'])

this code print the value of the attribute AttributeID

Upvotes: 0

Related Questions