2017-10-26 1 views
1

XML 파일 목록이 있는데이 파일 각각에 두 개의 값을 가져 와서 데이터 프레임에 대한 인덱스를 만들고 싶습니다. 저는 대략 1000 개의 파일을 가지고 있기 때문에 for 루프를 사용합니다. 그 파일은 데이터 프레임에 저장하기위한 몇 가지 기능을 계산하기를 원합니다.팬더에서 XML 구문 분석

<?xml version="1.0" encoding="utf-8"?> 
<tag1> 
    <tag2> 
     <tag3> 
      <author>The author</author> 
      <title> The title </title> 
     </tag3> 
    </tag2> 
</tag1> 

그래서 내가 가진 다중 인덱스 [author,title]와 dataframe를 만들 수 있습니다 : 예를 들어

는 첫 번째 파일은 다음과 같습니다

tree = etree.parse(file) 
root = tree.getroot() 
title = tree.xpath("/tag1/tag2/tag3/author")[0].text 
author = tree.xpath("/tag1/tag2/tag3/title")[0].text 

features = [Some Feature engineering] 
features_names = [List of the feature names] 
pd.DataFrame(features,columns = features_names,index = [[author],[title]]) 

내 문제이며, 그 구조와 파일의 수 (태그 수가 같음)가 항상 같으면 태그 이름이 한 파일에서 다른 파일로 변경 될 수 있습니다 (예 :

<?xml version="1.0" encoding="utf-8"?> 
<tag_1> 
    <secondtag> 
     <tag3> 
      <author>The second author</author> 
      <title> The second title </title> 
     </tag3> 
    </secondtag> 
</tag_1> 
)

태그의 이름을 모르는 저자와 제목에 어떻게 액세스 할 수 있습니까? 단지 그 어디서든 검색 -

+0

그들은 항상 제작하고 제목 태그 경우 을 찾을? 예 :'.xpath ('// author')'? –

+0

나는 항상 '저자'와 제목'꼬리표'를 가지고 있지만, 길을 시도했을 때, 작동하지 않았다.'tree.xpath ('// author') 이후''목록 색인이 범위를 벗어났다. 빈 목록을 반환했습니다. 그럼에도 불구하고, 나는 유죄가 입증 된 파일이 첫 번째 태그 인''을 가진 첫 번째 파일임을 확인했습니다. 문제가 될 수 있습니까? – ysearka

+0

Ahhh .... 그래서 네임 스페이스를 포함하도록 xpath를 변경하고 싶을 것입니다. –

답변