首先,道歉,因为我意识到这只与解析器编程相关。
我花了小时寻找包含以下内容的文本文件,但有数百个(希望有数千个)子条目。完整的生物分类文件将是完美的。当我的解析器分析简单的选项卡式文件时,以下的大量版本会很棒:
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
我能找到的最好的是生命之树图像(我从中转录了上面的示例数据集)。具有TON实际数据的单个文件将 awesome 。它不一定是生物分类数据集,但我真的希望数据反映现实世界中的某些东西。 (我的解析器提供一个菜单 - 如果我的测试的其余部分是一个实际上意味着什么的数据集,那将会很棒!)即使文件没有标签,但数据很容易被重新标记为标签格式...那会很棒。
有什么想法吗?谢谢!
答案 0 :(得分:1)
自上次回答以来,xml布局可能已更改,但上面提交的代码不再是准确。由此产生的转储是无关紧要的。一些节点具有别名(表示为'其他名称'),这些别名被报告为不同的节点本身。
我使用下面的脚本生成正确的转储。
<?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;
}
}
?>
答案 1 :(得分:0)
事实证明这是一种痛苦的屁股。我终于在tolweb.org上找到了“生命之树网络项目”中的数据源。我在下面制作了PHP脚本,以提供我的帖子所寻找的基本功能。
更改node_id以使其打印tolweb.org数据的任何标签表示 - 只需从您在其网站上浏览的页面中获取ID并更改下面的node_id。
请注意 - 他们的数据源会提供大型文件,因此请务必将文件下载到您自己的服务器(并将下面的“打开”方法更改为指向本地文件),如果您要将其打到超过一两次。
有关tolweb.org数据Feed的更多信息,请访问: 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;
}
}
?>