2017-05-28 6 views
-1
from xml.etree.ElementTree import ElementTree 

from xml.etree.ElementTree import Element 

import xml.etree.ElementTree as etree 

tree= etree.parse(r'N:\myinternwork\files xml of bus systems\sample.xml','r') 

root= tree.getroot() 

print(root) 
+1

Mögliches Duplikat [Wurzel der XML-Datei als NONE geben, warum? ] (https://stackoverflow.com/q/44215454/1255289) – miken32

+0

kann jemand bitte das Down-Vote der Frage entfernen, ich konnte jetzt keine Fragen stellen. Zu dieser Zeit der Frage zu stellen, war ich neu, um Überlauf zu stapeln, wusste ich nicht viel. Jetzt lese ich die Grundvoraussetzungen für das Stellen einer Frage. Danke im Voraus! –

Antwort

1

Sie die Datei nicht Parsen sample.xml, weil der zweite Parameter, den Sie zur Verfügung gestellt ('r'), funktionieren würde, wenn Sie getan haben zB:

tree= etree.parse(open(r'N:\myinternwork\files xml of bus systems\sample.xml','r')) 

oder

tree= etree.parse(r'N:\myinternwork\files xml of bus systems\sample.xml') 

per the xml doc:

xml.etree.ElementTree.parse(source, parser=None) Parses an XML section into an element tree. source is a filename or file object containing XML data. parser is an optional parser instance. If not given, the standard XMLParser parser is used. Returns an ElementTree instance.

Ihr Code zwei Zeilen hat, die keine sind t überhaupt verwendet:

from xml.etree.ElementTree import ElementTree 
from xml.etree.ElementTree import Element 

und das größere Problem ist, dass es einen Fehler wirft:

AttributeError: 'str' object has no attribute 'close' 

sowohl auf Python 2 und 3

deshalb Sie scheinen nicht den Lauf werden nicht minimaler Beispielcode, den Sie in Ihrer Frage vorgestellt haben.

Mit this Beispiel 1 aus w3schools.com in Datei /tmp/xx.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

Ich kann dies interaktiv ausführen:

$ python 
Python 3.6.1 (default, Mar 22 2017, 11:20:29) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import xml.etree.ElementTree as etree 
>>> tree = etree.parse('/tmp/xx.xml') 
>>> print(tree) 
<xml.etree.ElementTree.ElementTree object at 0x7ff247570e10> 
>>> root = tree.getroot() 
>>> print(root) 
<Element 'note' at 0x7ff24756d7c8> 
>>> 
+0

"Sie analysieren das Tupel" ist eine seltsame Art, das Problem zu erklären. Die 'parse()' Funktion nimmt ein optionales zweites Argument, aber dieses Argument muss ein 'XMLParser' Objekt sein, kein String. Außerdem verknüpfen Sie mit der lxml-Dokumentation, aber das OP verwendet nicht lxml. – mzjn

+0

@mzjn Mein Fehler, ich habe mir die falsche Dokumentation angesehen (googled für 'etree.parse()') – Anthon

+0

importiere xml.etree.ElementTree als etree tree = etree.parse (r'N: \ myinternwork \ files xml of Bussysteme \ sample.xml ')) root = tree.getroot() print (root) auch jetzt ausgegeben ist keine Hilfe? –

Verwandte Themen