2016-07-28 2 views
0

데이터 형식은 다음과 같습니다파이썬에서 특수 XML 형식을 구문 분석하려면 어떻게해야합니까?

<doc> 
<url>i am url</url> 
<docno>01a064132d932277</docno> 
<contenttitle>title</contenttitle> 
<content>whatever the content is </content> 
</doc> 

... 

<doc> 
<url>i am another url</url> 
<docno>01a064132d932277</docno> 
<contenttitle>title</contenttitle> 
<content>whatever the content is </content> 
</doc> 

그래서 전체 문서는, 더 구체적으로, 즉 매 6 행에 XML 형식으로 제공의 작은 XML 형식의 콘텐츠를 많이 포함되어 있습니다. lxml 또는 Beautiful Soup을 사용하려고 시도하지만 매번 6 개의 행을 읽는 API는 제공하지 않습니다.

또한 폴더에 .txt가 두 개 이상 있습니다.

어떻게 그 질문을 해결할 수 있습니까?

+1

가능한 복제본 [lxml.etree.iterparse를 통해 단일 파일에서 여러 XML 선언 구문 분석] (http://stackoverflow.com/questions/5651219/parse-several-xml-declarations-in-a-single -file-by-means-of-lxml-etree-iterparse) –

+1

이 문제를 수정하는 올바른 방법은 데이터 소스를 수정하여 적절하게 구문 분석 할 수있는 파일을 생성하는 것입니다. 한편, 그게 가능하지 않다면, 당신은 종종 @ LarsH가 말한 것을 할 수 있습니다. 이 파일이 정말 큰 로그/덤프 파일이라면 전체 파일을 메모리에 저장하지 못할 수도 있습니다. lxml의 FeedParser를 참조하여 점진적으로 파싱하는 것이 좋습니다. –

+0

larsh의 대답은 충분히 좋다고 생각합니다. –

답변

3

당신 수 :

  • 문자열로 (원시 텍스트, 해석 대상 외) 파일을 읽을
  • APPEND 처음으로 "<root>"와
  • 다음이 문자열의 끝을 "</root>" BeautifulSoup은 결과 문자열을 구문 분석합니다.

원래 각각 <doc> 요소는 <root>의 많은 하위 요소 중 하나입니다.

관련 문제