2016-09-26 5 views
-1

У меня есть файл test.xml как:XML minidom - получить полное содержание ChildNodes текста

<?xml version="1.0" encoding="utf-8"?> 
    <SetupConf> 
    <LocSetup> 
    <Src> 
     <Dir1>C:\User1\test1</Dir1> 
     <Dir2>C:\User2\log</Dir2> 
     <Dir3>D:\Users\Checkup</Dir3> 
     <Dir4>D:\Work1</Dir4> 
     <Dir5>E:\job1</Dir5>  
    </Src> 
    </LocSetup> 
    </SetupConf> 

Где узел зависит от пользовательского ввода. В узле «Dir» может быть определена структура 1,2,5,10 dir. По требованию я могу извлечь данные из test.xml с помощью @Padraic Cunningham, используя ниже код Python:

from xml.dom import minidom 
from StringIO import StringIO 
dom = minidom.parse('Test.xml') 
Src = dom.getElementsByTagName('Src') 
output = ", ".join([a.childNodes[0].nodeValue for node in Src for a in node.getElementsByTagName('Dir')]) 
print [output] 

И получать выход:

C:\User1\test1, C:\User2\log, D:\Users\Checkup, D:\Work1, E:\job1 

Но ожидаемый результат:

['C:\\User1\\test1', 'C:\\User2\\log', 'D:\\Users\\Checkup', 'D:\\Work1', 'E:\\job1'] 

ответ

0

Ну это решается сам:

from xml.dom import minidom 
DOMTree = minidom.parse('Test0001.xml') 
dom = DOMTree.documentElement 
Src = dom.getElementsByTagName('Src') 

for node in Src: 

    output = [a.childNodes[0].nodeValue for a in node.getElementsByTagName('Dir')] 

    print output 

И получение выходных данных: [u'C: \ User1 \ test1 ', u'C: \ User2 \ log', u'D: \ Users \ Checkup ', u'D: \ Work1', u 'E: \ job1']


Я уверен, что есть более простой другой способ .. пожалуйста, дайте мне знать .. Спасибо в Adv.

Смежные вопросы