Я пытаюсь разобрать документ .x3d с помощью RapidXml. К сожалению, он дает мне только первые 100 символов любого атрибута узла. Я просмотрел документацию, и похоже, что не должно быть никаких ограничений на длину значения атрибута.
Я использую RapidXml в Xcode; возможно динамическое распределение памяти не работает с компилятором xcode? кто-нибудь еще сталкивался с этим? Есть ли способ преодолеть это ограничение?
myfile.open(location.c_str(), std::ifstream::in);
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
text += line;
}
myfile.close();
}
text += "\0";
rapidxml::xml_document<> doc;
char *temp = new char[text.length() + 1];
strcpy(temp, text.c_str());
doc.parse<rapidxml::parse_no_data_nodes>(temp);
//why doesnt this work?
rapidxml::xml_node<>* root = doc.first_node();
rapidxml::xml_node<> *indexedfaceset = getChild(root, "IndexedFaceSet");
rapidxml::xml_attribute<> *indices = indexedfaceset->first_attribute("coordIndex");
rapidxml::xml_node<> *coordinate = getChild(indexedfaceset, "Coordinate");;
rapidxml::xml_attribute<> *coords = coordinate->first_attribute("point");
std::string indices_string = indices->value(); //gets cut off
int isize = indices->value_size(); //this is 108, although the string is longer
std::string coords_string = coords->value(); //gets cut off
int csize = indices->value_size(); //this is also 108, different size from indices
Спасибо!
Задача ещё не решена.
Других решений пока нет …