1
我需要使用RapidXML和C++解析XML文件。該文件是一個系統發育樹。每個節點都有一個具有1-3個子節點的節點,每個節點都有值。節點可以是科學名稱,通用名稱或等級。我的問題是,由於每個分類節點的子節點有所不同(例如,可能有科學名稱和常用名稱,而且可能只有科學名稱),我將如何訪問子節點的每個值? 例如,我寫的代碼:使用RapidXML解析
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()
得到EXC_BAD_ACCESS的線程錯誤和RapidXML這種方法文件
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>
感謝您的幫助!
非常感謝您的幫助! – 2013-03-07 16:44:35
沒問題,這是一個非常明確的問題 – 2013-03-07 18:40:22