dom.minidom 함수를 사용하여 XML의 일부를 추출하는 방법을 배우고 특정 요소와 특성을 성공적으로 반환 할 수 있습니다.Python에서 XML을 '걷는'공식적인 방법이 있습니까?
저는 구문 분석하고자하는 많은 수의 큰 XML 파일을 가지고 있으며 모든 결과를 db로 푸시합니다. os.walk와 같은 기능을 사용하여 계층 구조를 유지하는 논리적 인 방법으로 XML 요소를 추출하고 추출 할 수 있습니까?
는 XML 매우 기본적인 매우 정직 (이 작은 예에서)이 XML과 크롤링 각 특정 InternalSignature 관련 요소를 추출하는 정식 방법
<InternalSignature ID="9" Specificity="Generic">
<ByteSequence Reference="BOFoffset">
<SubSequence Position="1" SubSeqMinOffset="0" SubSeqMaxOffset="0" MinFragLength="0">
<Sequence>49492A00</Sequence>
<DefaultShift>5</DefaultShift>
<Shift Byte="00">1</Shift>
<Shift Byte="2A">2</Shift>
<Shift Byte="49">3</Shift>
</SubSequence>
</ByteSequence>
</InternalSignature>
<InternalSignature ID="10" Specificity="Generic">
<ByteSequence Reference="BOFoffset">
<SubSequence Position="1" SubSeqMinOffset="0" SubSeqMaxOffset="0" MinFragLength="0">
<Sequence>4D4D002A</Sequence>
<DefaultShift>5</DefaultShift>
<Shift Byte="2A">1</Shift>
<Shift Byte="00">2</Shift>
<Shift Byte="4D">3</Shift>
</SubSequence>
</ByteSequence>
</InternalSignature>
있는가? minidom.parse 및 .GetElementsByName 메서드를 사용하여 목록을 통해 항목을 호출하는 방법을 볼 수 있지만 요소를 계층 적 표현에 연결하는 방법을 잘 모르겠습니다.
내가 여러 값을 반환하는 방법을 보여줍니다 튜토리얼 발견 지금까지:
xmldoc = minidom.parse("file.xml")
Versionlist = xmldoc.getElementsByTagName('FFSignatureFile')
VersionRef = Versionlist[0]
Version = VersionRef.attributes["Version"]
DateCreated = VersionRef.attributes["DateCreated"]
print Version.value
print DateCreated.value
InternalSignatureList = xmldoc.getElementsByTagName('InternalSignature')
InternalSignatureRef = InternalSignatureList[0]
SigID = InternalSignatureRef.attributes["ID"]
SigSpecificity = InternalSignatureRef.attributes["Specificity"]
print SigID.value
print SigSpecificity.value
print len(InternalSignatureList)
내가 마지막 라인 InternalSignatureList 134 개 요소가 있다는 것을 (LEN)에서 볼 수
, 그리고 기본적으로 내가 원하는 각 InternalSignature 내부의 모든 요소를 개별 레코드로 추출하고이를 db로 넘겨 줄 수 있어야합니다.
음, 제가 질문을 이해한다면 모르겠지만 방법에 대한 [XPath는 (http://en.wikipedia.org/wiki/XPath) ('getchildren() '과 결합 가능합니다 - 적어도'lxml'은 XML 트리를 가로 지르는 데 사용합니다 .. – Kimvais