मैं एक xml दस्तावेज़ जिसे मैं Etree.lxmllxml etree xmlparser अवांछित नाम स्थान
का उपयोग कर पार्स करने के लिए कोशिश कर रहा हूँ है हटाने<Envelope xmlns="http://www.example.com/zzz/yyy">
<Header>
<Version>1</Version>
</Header>
<Body>
some stuff
<Body>
<Envelope>
मेरे कोड है:
path = "path to xml file"
from lxml import etree as ET
parser = ET.XMLParser(ns_clean=True)
dom = ET.parse(path, parser)
dom.getroot()
मैं dom.getroot प्राप्त करने के लिए प्रयास करते हैं() मैं:
<Element {http://www.example.com/zzz/yyy}Envelope at 28adacac>
हालांकि मैं केवल हैं:
<Element Envelope at 28adacac>
जब मैं कर
dom.getroot().find("Body")
मैं कुछ भी नहीं लौटे मिलता है। हालांकि, जब मैं
dom.getroot().find("{http://www.example.com/zzz/yyy}Body")
मुझे परिणाम मिल गया।
मैंने सोचा कि ns_clean = पारदर्शी के लिए सही यह रोक देगा।
कोई विचार?
body = dom.xpath ('// ns: body', namespaces = {'ns': 'http: //www.xxx.com/zzz/yyy'}) परफेक्ट! सभी नामस्थानों को हटाने के लिए – Mark
एक्सएसएलटी। बस मैं जो खोज रहा था, प्रतिभा। –
FYI यदि Python3 का उपयोग कर आपको पहले xslt स्ट्रिंग को एन्कोड करने की आवश्यकता होगी। यानी xslt_doc = ET.parse (io.BytesIO (str.encode (xslt)) – AZhao