XML 파일에서 일부 데이터를 추출하여 XLS 또는 DBF와 같은 테이블 형식으로 저장하고 싶습니다. 여기 Python이 XML에서 데이터를 추출하여 Excel에 저장
이 XML 파일은 내가 가지고<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header />
<SOAP-ENV:Body>
<ADD_LandIndex_001>
<CNTROLAREA>
<BSR>
<VERB>ADD</VERB>
<NOUN>LandIndex</NOUN>
<REVISION>001</REVISION>
</BSR>
</CNTROLAREA>
<DATAAREA>
<LandIndex>
<reportId>AMI100031</reportId>
<requestKey>R3278458</requestKey>
<SubmittedBy>EN4871</SubmittedBy>
<submittedOn>2015/01/06 4:20:11 PM</submittedOn>
<LandIndex>
<agreementdetail>
<agreementid>001 4860</agreementid>
<agreementtype>NATURAL GAS</agreementtype>
<currentstatus>
<status>ACTIVE</status>
<statuseffectivedate>1965/02/18</statuseffectivedate>
<termdate>1965/02/18</termdate>
</currentstatus>
<designatedrepresentative>
</designatedrepresentative>
</agreementdetail>
</LandIndex>
</LandIndex>
</DATAAREA>
</ADD_LandIndex_001>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
내가 DataArea 인/LandIndex/LandIndex/
UPDATE 아래에있는 agreementdetail 태그 내부 정보에 관심이 :
덕분에 MattDMo이 작업은 그 죽은 지점에서 조금 옮겼습니다. 그래서 아래에이 스크립트를 만들었습니다. 파일을 반복하고 계약의 모든 인스턴스를으로 가져오고 각각 계약 번호 및 계약 유형을 출력합니다.
import xml.etree.ElementTree as ET
import arcpy
xmlfile = 'D:/Working/Test/Test.xml'
element_tree = ET.parse(xmlfile)
root = element_tree.getroot()
agreement = root.findall(".//agreementdetail")
result = []
elements = ('agreementid', 'agreementtype')
for a in agreement:
obj = {}
for e in elements:
obj[e] = a.find(e).text
result.append(obj)
arcpy.AddMessage(result)
내가 수신하고 출력이 문자열의 무리로 구성 { 'agreementid': '001 4860', 'agreementtype': '천연 가스'}
지금 내가이 출력을 변환 할 필요를 당신이 그것을 수행하는 방법에 나를 인도 할 수 있다면
가agreementid | agreementtype
001 4860 | NATURAL GAS
나는 매우 감사하게 될 것입니다 : 테이블 형식 (.XLS 등 .CSV, .DBF) 때문에에 그 agreementid 및 agreementtype는 열입니다. 아니면 어떤 예입니까?
P.
이import xml.etree.ElementTree as ET
import arcpy
xmlfile = 'D:/Working/Test/Test.xml'
element_tree = ET.parse(xmlfile)
root = element_tree.getroot()
agreement = root.find(".//agreementid").text
arcpy.AddMessage(agreement)
root.find()
호출이 사용하는 XPath 표현이라는 현재 수준 아래의 모든 수준에서 첫 번째 태그를 찾으려면 (빠른 쪽지가 파이썬 문서 here에) : 파이썬 버전은 2.7
감사합니다! 그것은 작동합니다! –
실제로이 xml에 많은 태그가 포함되어 있기 때문에 실제로 의 모든 증거를 모든 임베디드 요소와 함께 얻는 것이 내 목표입니다. 방금이 게시물의 길이를 단축했습니다. –
@OlgaK. 다양한 입력을 사용하여 ['csv'] (https://docs.python.org/2/library/csv.html) 모듈을 사용하여 CSV 파일을 만들고 쓰는 방법에 대한 많은 게시물이 있습니다. 문서를 탐색하고 관련 질문을 위해 SO를 검색 한 다음 직접 코드를 시험해보십시오. 그래도 문제가 해결되지 않으면 새로운 질문을하십시오. – MattDMo