현재 모든 문제에 대한 해결책을 찾지 못했지만 문제를 적절히 해결하지 못했습니다. 나는 XML 문서에서 루트 노드의 자식을 반복하고 반복 (예 : 아래의 XML에서 반복하여 COMPANY 및 ROLE의 각 인스턴스를 가져옴) 내의 각 하위 키의 값을 가져 오려고 시도하고 있습니다. 이것은 거대한 프로젝트의 마지막 부분이며 나는 완전히 붙어 있습니다. 모든 도움이 대단히 감사 할 것입니다.XML 요소 트리 파이썬 자식을 반복하고 각 하위 코드를 CSV 열로 저장합니다.
<Personnel Personnel ID = "123">
<First_Name> First </First_Name>
<Last_Name> Last </Last_Name>
<User_ID> 123 </User_ID>
<Date> 2017-01-01 </Date>
<INFO>
<INFO_1>
<PHONE> 555-555-5555 </PHONE>
<INFO_2>
<EMAIL> [email protected] </EMAIL>
</INFO>
<LINKS>
<LINK COMPANY = "Company 1" ROLE = "Role 1" />
<LINK COMPANY = "Company 2" ROLE = "Role 2" />
<LINK COMPANY = "Company 3" ROLE = "Role 3" />
....
<LINK Company = "Company n" ROLE = "Role n" />
</LINKS>
<TAGS>
<TAG Term="Tag 1" />
<TAG Term="Tag 2" />
<TAG Term="Tag 3" />
...................
<TAG Term="Tag n" />
</Tags>
<Personnel_Field_1> Field 1 </Personnel_Field_1>
<Personnel_Field_2> Field 2 </Personnel_Field_2>
예제 코드 :
for contact in root.findall('Personnel'):
Personnel_ID = contact.get('Personnel_ID')
contact_info.append(Personnel_ID)
First_Name = contact.find('First_Name').text
contact_info.append(First_Name)
Last_Name = contact.find('Last_Name').text
contact_info.append(Last_Name)
User = contact.find('User_ID').text
contact_info.append(User)
Date = contact.find('Date').text
contact_info.append(Date)
Email = contact.find('.//EMAIL').text
contact_info.append(Email)
Phone = contact.find('.//PHONE').text
contact_info.append(Phone)
Personnel_1 = contact.find('Personnel_Field_1').text.encode('utf-8')
contact_info.append(Personnel_1)
Personnel_2 = contact.find('Personnel_Field_2').text.encode('utf-8')
contact_info.append(Personnel_2)
지금까지 나는 다음과 CSV 열로 저장 당기는에 성공했다 : 직원 ID, 이름, 성, 사용자 ID, 날짜, 이메일, 전화 번호, 인사 1, 인사 2
내가 짚어 놓은 것은 COMPANY와 ROLE을 구문 분석하고 각 용어를 구문 분석하는 기능입니다. 각 회사, 역할 및 태그 값을 자체 열로 저장해야합니다. 누구든지 나를 통해 이러한 요소들을 반복하는 방법을 보여줌으로써 도움을 줄 수 있다면 CSV 컬럼에 저장할 수있을 것입니다.
미리 조언 해 주셔서 감사합니다.이 프로젝트는 내가 연구하고있는 거대한 프로젝트의 마지막 부분이며, 내가 찾은 모든 잠재적 솔루션을 다 써 버린 것처럼 느껴집니다.