RapidXML と C++ を使用して解析することになっている XML ファイルがあります。ファイルは系統樹です。各ノードには、それぞれ値を持つ 1 ~ 3 個の子ノードを持つノードがあります。ノードは、学名、一般名、またはランクにすることができます。私の質問は、分類ノードごとに子ノードが異なるため (たとえば、学名と一般名の両方を持つものと、学名のみを持つものがある場合など)、子ノードの各値にどのようにアクセスすればよいでしょうか? たとえば、次のコードを書きました。
for (xml_node<> * clade_node = root_node->first_node("clade"); clade_node; clade_node = clade_node->next_sibling())
{
xml_node<> * taxonomy_node = clade_node->first_node("taxonomy");
xml_node<> * sciName_node = taxonomy_node->first_node("scientific_name");
xml_node<> * comName_node = taxonomy_node->next_sibling("common_name");
xml_node<> * rank_node = taxonomy_node->next_sibling("rank");
string sciName = sciName_node->value();
string comName = comName_node->value();
string rank = rank_node->value();
}
string comName = comName_node->value()
ただRapidXMLファイルの行とこのメソッドでEXC_BAD_ACCESSのスレッドエラーが出ます
Ch *value() const
{
return m_value ? m_value : nullstr();
}
ここに私が解析しているファイルの一部があります:
<phylogeny rooted="true" rerootable="false">
<clade>
<clade>
<taxonomy>
<scientific_name>Neomura</scientific_name>
</taxonomy>
</clade>
<clade>
<taxonomy>
<id provider="uniprot">2</id>
<scientific_name>Bacteria</scientific_name>
<rank>superkingdom</rank>
</taxonomy>
</clade>
</clade>
</phylogeny>
助けてくれてありがとう!