from lxml import etree as E class DenyExternal(E.Resolver): def resolve(self, url, public_id, context): raise ValueError("External resources are disabled") def parse(text): if "\n Marigold12flower\n Fenugreek0herb\n Basil7herb\n" root = parse(source) print(root.xpath("packet[number(quantity) >= $minimum and @available='true']/@id", minimum=8)) print(root.xpath("packet[@id=$identifier]/name/text()", identifier="p3"))