2017-01-30 3 views
1
import xml.etree.ElementTree as ET 

tree = ET.parse("Parsed.xml") 
doc = tree.getroot() 

for elem in doc.findall('.//medicationsInfo/entryInfo/productCode/code'): 
    print (elem.text); 

for elem in doc.findall('.//medicationsInfo/entryInfo/productCode/codeSystem'): 
    print (elem.text); 

, 내가 경로를 지정하여 코드와 codeSystem의 값을 얻고, 그러나 그들은 모든 codeSystem을 먼저 코드처럼 인쇄하고 있습니다. 병렬로 인쇄하고 싶습니다 (예 : 열과 같이). 그래서 위의 코드를 편집하여 xml 문서를 구문 분석 할 수 있습니까?구문 분석 XML 문서, 위의 파이썬 코드에서 파이썬

예를 들어 나는이 방법으로 XML을 가지고 있으며, 현명한 열과 코드를 인쇄하고 싶다.

답변

0

이것은 최선의 방법은 아니지만 작동해야합니다. 우리는 codecodeSystem을 찾고 xml을 스캔합니다. xml 스키마는 항상 쌍으로 나타납니다 (xml 스키마에 의해 적용되어야 함).

우리는 code vaules을 하나로 묶어 두 개의 목록을 만들고 다른 하나는 codeSystem으로 만들고 목록을 반복하여 출력하여 쌍을 재생성합니다. 새로운 정보가 처음 몇 의견을 무시해야하므로 질문에 제공 한 후이 답변으로 업데이트 된 NB

codeList=[] 
codeSystemList=[] 

for elem1 in doc.findall('.//medicationsInfo/entryInfo/productCode/code'): 
    codeList.append(elem1.text) 

for elem2 in doc.findall('.//medicationsInfo/entryInfo/productCode/codeSystem'): 
    codeSystemList.append(elem2.text) 


for i in range(len(codeList)): 
    print(codeList[i],codeSystemList[i]) 

+0

내가 이미 시도 위의 코드, 무슨 일이 일어나고 것은 (17)가있는 경우처럼 코드 및 codeSystem은 제품 코드 아래에 있으며, 17 * 17 행을 인쇄합니다. – Prasanna

+0

문제 일 수있는 생각. xml 샘플을 제공해 주셔서 감사합니다. 'productCode' 각각에 대해'code'와'codeSystem'의 첫번째 쌍이 필요합니까? 아니면 다른 시스템을위한 코드를 번역 한 이후 코드도 포함시켜야합니까? – CJC

+0

예 .. 모든 코드와 codeSystem이 필요합니다. – Prasanna