Thread unbekanntes XML-File in CSV (8 answers)
Opened by mordur. at 2014-01-16 14:45

hlubenow
 2014-01-18 18:28
#173065 #173065
User since
2009-02-22
876 Artikel
BenutzerIn
[default_avatar]
Hey, das ist cool!

Noch zu meinen Versuchen: Ich hab' jetzt doch geschafft, XML::Twig bei mir zu installieren, komme aber noch nicht so recht damit klar.

XML-Verarbeitung hatte ich sonst nur in Python probiert. Meist bin ich diesen Weg gegangen, mit einer rekursiven Funktion. Das Modul dort soll auch nicht mehr so recht das sein, was man heute üblicherweise verwendet. Aber ich bin damit immer noch am besten zurechtgekommen. Es unterscheidet im XML unter anderem "Element-Nodes" und "Text-Nodes".
Zu dem Beispiel bekomme ich eine Ausgabe mit:
Code (python): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
# coding: iso-8859-1

import xml.dom.minidom

xmlstring = """<user>
   <firstName>Sebastian</firstName>
   <telephoneNumber>100</telephoneNumber>
   <associatedDevices>
                  <device>SEP111111111111</device>
                  <device>CSFBLA</device>
                  <device>SEP222222222222</device>
   </associatedDevices>
   <primaryExtension>
                  <pattern>100</pattern>
                  <routePartitionName>PT_Intern</routePartitionName>
   </primaryExtension>
   <associatedGroups>
            <userGroup>
                     <name>Standard CTI Enabled</name>
                     <userRoles>
                        <userRole>Standard CTI Enabled</userRole>
                     </userRoles>
            </userGroup>
            <userGroup>
                     <name>Standard CCM End Users</name>
                     <userRoles>
                        <userRole>Standard CCM End Users</userRole>
                        <userRole>Standard CCMUSER Administration</userRole>
                     </userRoles>
            </userGroup>
    </associatedGroups>
</user>"""

suitablestring = ""

for i in xmlstring: 
    i = i.strip()
    suitablestring += i

dom = xml.dom.minidom.parseString(suitablestring) 
 
def dokument(domina):
    for node in domina.childNodes:
        if node.nodeType == node.ELEMENT_NODE:
            print node.nodeName
        if node.nodeType == node.TEXT_NODE:
            print "Value: " + node.nodeValue.strip()
            print
        dokument(node)
 
dokument(dom)

Ausgabe wäre dann:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
user
firstName
Value: Sebastian

telephoneNumber
Value: 100

associatedDevices
device
Value: SEP111111111111

device
Value: CSFBLA

device
Value: SEP222222222222

primaryExtension
pattern
Value: 100

routePartitionName
Value: PT_Intern

associatedGroups
userGroup
name
Value: StandardCTIEnabled

userRoles
userRole
Value: StandardCTIEnabled

userGroup
name
Value: StandardCCMEndUsers

userRoles
userRole
Value: StandardCCMEndUsers

userRole
Value: StandardCCMUSERAdministration

Das ist plausibel, aber ich wüßte jetzt nicht, wie man daraus CSV in einer Tabelle mit jeweils einer Überschrift pro Spalte machen sollte, eben wegen der Verschachtelungen.

View full thread unbekanntes XML-File in CSV