XML 파일이 상당히 크기 때문에 특정 매개 변수가 포함 된 모든 노드 (다른 회사 정보)를 가져와야합니다. XML의 압축을 풀면 약 12GB입니다.OverflowError : DOM을 사용하여 큰 XML을 구문 분석하는 동안 크기가 int에 맞지 않습니다.
<Companies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...>
<Company id="782634892" source="abcd">
<attribution>abcde</attribution>
<name xml:lang="en">company name</name>
<Phones>
<Phone type="phone" hide="0">
<formatted>+1800111</formatted>
<country>1</country>
<prefix>800</prefix>
<number>111</number>
</Phone>
</Phones>
<Rubrics>
<rubric ref="184107947"/>
</Rubrics>
더 많은 내용이 있지만 중요하지 않습니다.
내 코드는 매우 간단하다 :
그것은 내가 테스트를 위해 만든 작은 파일에서 작동file = open('companies2.xml')
data = file.read()
dom = parseString(data)
key = dom.getElementsByTagName("Company")
for elements in key:
rubricsArray = elements.getElementsByTagName("Rubrics")[0].getElementsByTagName("rubric")
for rub in rubricsArray:
if rub.attributes["ref"].value == '32432793389':
print elements.toxml()
. 그러나 여기에서는 그렇지 않습니다.
Traceback (most recent call last):
File "./XMLparse.py", line 29, in <module>
dom = parseString(data)
File "/usr/lib/python2.7/xml/dom/minidom.py", line 1930, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
OverflowError: size does not fit in an int
아이디어를 얻는 방법은 무엇입니까? gz 파일을 사용하려고했지만 zmore는 임의의 첫 번째 줄을 만듭니다.
------> companies2.xml.gz <------
DOM은 구문 분석하지 않습니다. 그래서 총에 맞았 어. 도움을 미리 요청 해 주셔서 감사합니다.
파일 크기가 2 기가 바이트 이상으로 성장함에 따라, 우리는 그것을 사용하기 때문에 소프트웨어가 대처할 수없는 경우 더 많은 경우를 보게 될 것입니다 32 비트 오프셋. 우리의 프로그래밍 환경의 대부분은 언어 수준에서 32 비트 int를 배열, 문자열 등으로의 오프셋으로 사용하도록 제한됩니다. 쉬운 대답이 아닙니다. –
@MichaelKay : 동의합니다. 그러나 최근에는 아주 즐거운 놀라움을했습니다. 많은 오래된 도구는 32 비트 색인 생성을 지원하지 않지만 똑같이 많은 도구가 업데이트되었습니다. 대개의 경우 문제를 확인한 다음 업데이트 된 도구를 찾아서 관리 할 수 있습니다. – DrV