2011-10-05 3 views
1

첫 번째로, 나는 이것이 파서 프로그래밍에 단지 접선 적으로 관련되어 있다는 것을 깨닫기 때문에 사과합니다.파서 테스트를위한 대형 탭 계층 데이터 세트는 어디에서 찾을 수 있습니까?

시간을으로 보내면 다음과 같은 내용을 포함하지만 수백 (잘하면 수천) 개의 하위 항목이 포함 된 텍스트 파일을 찾습니다. 완전한 생물학적 분류 파일이 완벽 할 것입니다. 내 파서 간단한 탭 파일을 구문 분석으로 다음의 대규모 버전은 좋은 것 :

TL, DR - 나는 다음과 같은 설정 대규모 단일 파일 계층 데이터가 필요합니다

Kindoms 
    Monera 
    Protista 
    Fungi 
    Plants 
    Animals 
     Porifera 
      Sponges 
     Coelenterates 
      Hydra 
      Coral 
      Jellyfish 
     Platyhelminthes 
      Flatworms 
      Flukes 
     Nematodes 
      Roundworms 
      Tapeworms 
     Chordates 
      Urochordataes 
      Cephalochordates 
      Vertebrates 
       Fish 
       Amphibians 
       Reptiles 
       Birds 
       Mammals 

내가 찾을 수 있었던 최선의 방법은 tree-of-life 이미지 (위에서 샘플 데이터 세트를 복사 한 것)입니다. 실제 데이터 톤이 1 개인 파일은 입니다.입니다. 그것은 생물학적 분류 데이터 세트 일 필요는 없지만, 실제 세계에서 무언가를 반영하기위한 데이터가 정말 좋을 것입니다. (내 파서는 메뉴를 제공합니다. 테스트의 나머지 부분이 실제로 어떤 것을 의미하는 데이터 세트를 사용하면 좋을 것입니다!) 파일이 탭으로 표시되지 않지만 데이터가 탭 형식으로 상당히 쉽게 regex'ed 되었더라도 ... 그게 좋을거야.

아이디어가 있으십니까? 감사!

답변

1

그것은 가능 . 결과 덤프는 관계가 없습니다. 일부 노드에는 별개의 노드로보고되는 별명 ('othername'으로 표시됨)이 있습니다.

아래의 스크립트를 사용하여 올바른 덤프를 생성했습니다.

<?php 
$reader = new XMLReader(); 
$reader->open('http://tolweb.org/onlinecontributors/app?service=external&page=xml/TreeStructureService&node_id=1'); //15963 is the primates index 
$set=-1; 
while ($reader->read()) { 
    switch ($reader->nodeType) { 
     case (XMLREADER::ELEMENT): 
     if ($reader->name == "OTHERNAMES"){ 
      $set=1; 
     } 
     if ($reader->name == "NODES"){ 
      $set=-1; 
     } 
     if ($reader->name == "NODE"){ 
      $set=-1; 
     } 
     if ($reader->name == "NAME" AND $set == -1){ 
      echo str_repeat("\t", $reader->depth - 2); //repeat tabs for depth 
      $node = $reader->expand(); 
      echo $node->textContent . "\n"; 
     } 
      break; 
    } 
} 
?> 
0

이것은 엉덩이에 그렇게 아팠습니다. 마지막으로 tolweb.org에서 "The Tree of Life Web Project"의 데이터 피드를 추적했습니다. 내 게시물은 찾고 있던 기본 기능을 제공하기 위해 아래의 PHP 스크립트를 만들었습니다.

node_id가 tolweb.org 데이터의 탭으로 표시된 표현을 인쇄하도록 변경하십시오. - 사이트에서 탐색중인 페이지의 ID를 가져 와서 아래의 node_id를 변경하십시오.

데이터 피드가 대용량 파일이므로 자신의 서버에 파일을 다운로드하고 (로컬 파일을 가리 키도록 아래의 "공개"방법을 변경하십시오) 더 많은 정보를 얻으려면 한 번 또는 두 번 이상.

더 tolweb.org 데이터 피드에 대한 정보는 여기에서 찾을 수 있습니다 : 은 XML 레이아웃이 최종 해답 이후 변경되지 않았다 그러나 위의 제출 코드가 더 이상 정확한 것을 http://tolweb.org/tree/home.pages/downloadtree.html

<?php 
$reader = new XMLReader(); 
$reader->open('http://tolweb.org/onlinecontributors/app?service=external&page=xml/TreeStructureService&node_id=15963'); //15963 is the primates index 
while ($reader->read()) { 
    switch ($reader->nodeType) { 
     case (XMLREADER::ELEMENT): 
      if ($reader->name == "NAME"){ 
       echo str_repeat("\t", $reader->depth - 2); //repeat tabs for depth 
       $node = $reader->expand(); 
       echo $node->textContent . "\n"; 
      } 
      break; 
    } 
} 
?> 
관련 문제