чтение XML с использованием Panda в Python - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть XML-файл. Я пытаюсь прочитать его обычным способом, как показано ниже

def xmlfilereadread(self,path):
    doc = minidom.parse(path)
    Account = doc.getElementsByTagName("sf:ReceiverSet")[0]
    num = Account.getAttribute('totalNo')
    aList = []
    for i in range(int(num)):
        print(i)
        AccountReference = doc.getElementsByTagName("sf:Receiver")[i] 

но мне нужно использовать panda вместо этого кода. Как я могу прочитать data.my пример XML-кода

<?xml version="1.0" encoding="UTF-8"?>
<sf:IFile xmlns:sf="http://www.canadapost.ca/smartflow" sequenceNo="10">   
<sf:ReceiverSet documentTypes="TAXBILL" organization="lincolntax" totalNo="3">  
<sf:Receiver sequenceNo="1" correlationID="1114567890123456789">   
<sf:AccountReference>11145678901234567891111</sf:AccountReference>   
<sf:SubscriptionAuth> <sf:ParamSet>   
<sf:Param name="auth1">1114567890123456789</sf:Param>   
<sf:Param name="auth2">CARTER, JOE</sf:Param> </sf:ParamSet>   
</sf:SubscriptionAuth>  
</sf:Receiver> <sf:Receiver sequenceNo="2" correlationID="2224567890123456789">   
<sf:AccountReference>22245678901234567892222</sf:AccountReference> <sf:SubscriptionAuth> <sf:ParamSet>  
<sf:Param name="auth1">2224567890123456789</sf:Param>   
<sf:Param name="auth2">DOE, JANE</sf:Param> </sf:ParamSet>   
</sf:SubscriptionAuth> </sf:Receiver> <sf:Receiver sequenceNo="3" correlationID="3334567890123456789">   
<sf:AccountReference>33345678901234567893333</sf:AccountReference> <sf:SubscriptionAuth> <sf:ParamSet>  
<sf:Param name="auth1">3334567890123456789</sf:Param> <sf:Param name="auth2">SOZE, KEYSER</sf:Param>  
</sf:ParamSet> </sf:SubscriptionAuth> </sf:Receiver> </sf:ReceiverSet> </sf:IFile>

1 Ответ

0 голосов
/ 06 сентября 2018

XML является по своей природе иерархическим форматом данных и наиболее естественным способ представить это с дерева. У ET есть два класса для этого цель - ElementTree представляет весь документ XML в виде дерева, и Элемент представляет один узел в этом дереве. Взаимодействие с Весь документ (чтение и запись в / из файлов) обычно выполняется на уровень ElementTree. Взаимодействие с одним элементом XML и его подэлементы выполнены на уровне элемента

.

import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')
root = tree.getroot()

Или вы можете использовать lxml

из lxml import etree

root = etree.parse(r'local-path-to-.xml')
print (etree.tostring(root))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...