커다란 xml 파일 (현재 wikipedia dump)이 있습니다. 이 xml 크기는 약 45GB이며 현재 위키 피 디아의 전체 데이터를 나타냅니다.Python을 사용하여 이동 중에 거대한 xml 파일을 구문 분석하는 방법
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.8/" xmlns:xsi="http://ww
w.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/x
ml/export-0.8/ http://www.mediawiki.org/xml/export-0.8.xsd" version="0.8" xml:la
ng="en">
<siteinfo>
<sitename>Wikipedia</sitename>
<base>http://en.wikipedia.org/wiki/Main_Page</base>
<generator>MediaWiki 1.21wmf6</generator>
<case>first-letter</case>
<namespaces>
<namespace key="-2" case="first-letter">Media</namespace>
<namespace key="-1" case="first-letter">Special</namespace>
<namespace key="0" case="first-letter" />
<namespace key="1" case="first-letter">Talk</namespace>
<namespace key="2" case="first-letter">User</namespace>
<namespace key="3" case="first-letter">User talk</namespace>
<namespace key="4" case="first-letter">Wikipedia</namespace>
<namespace key="5" case="first-letter">Wikipedia talk</namespace>
<namespace key="6" case="first-letter">File</namespace>
<namespace key="7" case="first-letter">File talk</namespace>
<namespace key="8" case="first-letter">MediaWiki</namespace>
<namespace key="9" case="first-letter">MediaWiki talk</namespace>
<namespace key="10" case="first-letter">Template</namespace>
<namespace key="11" case="first-letter">Template talk</namespace>
<namespace key="12" case="first-letter">Help</namespace>
<namespace key="13" case="first-letter">Help talk</namespace>
<namespace key="14" case="first-letter">Category</namespace>
<namespace key="15" case="first-letter">Category talk</namespace>
<namespace key="100" case="first-letter">Portal</namespace>
<namespace key="101" case="first-letter">Portal talk</namespace>
<namespace key="108" case="first-letter">Book</namespace>
<namespace key="109" case="first-letter">Book talk</namespace>
<namespace key="446" case="first-letter">Education Program</namespace>
<namespace key="447" case="first-letter">Education Program talk</namespace
>
<namespace key="710" case="first-letter">TimedText</namespace>
<namespace key="711" case="first-letter">TimedText talk</namespace>
</namespaces>
</siteinfo>
<page>
<title>AccessibleComputing</title>
<ns>0</ns>
<id>10</id>
<redirect title="Computer accessibility" />
<revision>
<id>381202555</id>
<parentid>381200179</parentid>
<timestamp>2010-08-26T22:38:36Z</timestamp>
<contributor>
<username>OlEnglish</username>
<id>7181920</id>
</contributor>
<minor />
<comment>[[Help:Reverting|Reverted]] edits by [[Special:Contributions/76.2
8.186.133|76.28.186.133]] ([[User talk:76.28.186.133|talk]]) to last version by
Gurch</comment>
<text xml:space="preserve">#REDIRECT [[Computer accessibility]] {{R from C
amelCase}}</text>
<sha1>lo15ponaybcg2sf49sstw9gdjmdetnk</sha1>
<model>wikitext</model>
... 그래서 공지 트리의 페이지 요소를
에 : 파일의 처음 몇 줄 (이상 출력)입니다. Wikipedia의 고유 한 페이지에 해당합니다. 주어진 XML은 Wikipedia의 모든 페이지로 페이지 요소 형태로 구성됩니다. 필자는 위키 피 디아의 모든 페이지에 대한 페이지에서 제목 항목의 값을 추출하여 (간단히하기 위해) 인쇄 할 필요가있는 파서를 작성해야합니다.저는 파이썬을 사용하여 같은 것을 만들려고합니다 (솔루션을 제공하는 언어로 전환 할 수는 있지만). 내가 아는 유일한 방법은 ElementTree입니다.
그러나 parse ('file.xml') 함수를 사용하려면 먼저 전체 문서를 완전히 파싱해야하며 그 다음 결과가 출력됩니다. 분명히, 나는 전체 xml 페이지 요소로 구성되어 알고 있습니다. 나는 프로그램이 나머지 XML을 파싱하는 동안 제목을 인쇄하기를 원한다. 그것도 가능합니다. 그렇다면 어떻게?
EDIT 참고 : 여기에서 제목을 추출하면 문제가 단순하게 유지됩니다. 그러나 나는 미래에 같은 것을 추출해야하기 때문에 xml 파싱 기능이 필요하다.
관련 : http://stackoverflow.com/questions/3707155/can-python-xml-elementtree-parse-a-very-large-xml-file –