EDIT: Я понял это, смотреть в нижней половине этогоTinyXML2 Синтаксический идет очень плохо
Прежде чем задать свой вопрос, я выскажу я успешно использовал TBXML и RapidXML. В частности, Rapid проанализировал этот же документ успешно. Я знаком с чтением XML и присваиванием значений.
Тем не менее, TinyXML и Cocos, по-видимому, являются хорошей комбинацией, поскольку он компилируется в android. Я могу спуститься по узлам ONCE, распечатать значения, увидеть, где я ... Проблема заключается в следующем:
node = node-> nextSibling();
Всегда возвращает false. Я узнал, что могу это сделать:
node-> Parent() -> NextSibling(); и это даст мне следующего брата. Но вот проблема:
ParentNode-> FirstChild() вернет первый элемент этого дерева. Но если я вызываю ParentNode-> NextSibling(), по какой-то причине он возвращает указатель на родного брата, за исключением того, что теперь он находится на одном уровне выше на дереве.
Это будет делать цикл полуденного кошмара.
Я искал http://grinninglizard.com/tinyxml2docs/classtinyxml2_1_1_x_m_l_node.html, чтобы найти различия между использованием стилей узлов или стилей (например, NextSiblingElement()), но в лучшем случае я получаю один цикл с ошибкой или просто сбой.
Этот анализатор не работает, как и другие, или у меня неправильные соглашения. Я поместил cout повсюду, чтобы увидеть, где я, и начальные прогоны кажутся прекрасными. В частности, NextSibling вызывает проблемы, и я думаю, что просто не знаю древовидной структуры, которую они «намерены» использовать.
Это мой вложенный цикл, как сейчас:
for(node = node->FirstChild(); node; node = node->NextSibling()) {
cout << endl << node->Parent()->Value();
for(tempElement = node->FirstChildElement(); tempNode; tempElement = tempElement->NextSibling()) {
//assign inner values
}
//take the inner values and assign them to an object
}
Таким образом, в то время как мой код соответствует всем предложениям для обхода родственных элементов, это не удается. Я мог бы использовать некоторую помощь от того, кто использовал это, поскольку то, что я делал за 30 минут с каждой другой системой, стоит часов.
Кроме того, я уверен, что это будет иметь больше смысла, когда «их путь» будет понят, но я не могу найти один рабочий пример в Интернете, делая это. Множество из них предлагает код кода, который у меня есть (не работает).
В основном, TinyXML находит узлы и значения, и если вы помните, что для получения этого типа вы должны использовать node-> Parent() -> Value(), то знаете, где вы находитесь в дереве не кажется слишком сложным.
Просто для Пинки, вот нагрузка, которая работает:
if (doc.LoadFile(xmlFilePath.c_str()) == XML_SUCCESS)
{
XMLNode *node = doc.RootElement();
node = node->FirstChild(); //root
//....
Спасибо за любую помощь! Был бы весьма признателен и, возможно, единственный вопрос TinyXML2 с рабочим ответом для будущих искателей, по крайней мере, на данный момент.
EDIT: Я не могу пока ответить, но я понял:
Для любви ...Надеюсь, что я делаю что-то не так, если вы это делаете, обратите внимание на этот шаблон, он работает (вероятно, тот же для TinyXML2, я предполагаю, просто замените TiXmlNode на XMLNode):
примечание: узел ссылается к корню.
По существу, подумайте о NextSibling как о функции родителя, где он выкладывает «кто следующий».
Спасибо за посещения. Это проходит по крайней мере до 6 пунктов (внешние, yay!), Тогда я уверен, что ошибка, с которой я сейчас сталкиваюсь, является моей.
Это должно помочь кому-то, если кто-либо еще нуждается в динамическом перемещении дерева.
TiXmlNode * subNode = node->FirstChild();
for(subNode = node ; subNode; subNode = subNode->Parent()->NextSibling())
{
subNode = subNode->FirstChild();
cout << endl << "Parent " << subNode->Parent()->Value() << endl;
for(tempNode = subNode; tempNode; tempNode = tempNode->Parent()->NextSibling())
{
tempNode = tempNode->FirstChild();
Я просто понял, этот код имеет свой дискретизацию элемент ... заменить tempElement с tempNode, и вы будете иметь хорошее представление о том, что я делал на протяжении большей части попыток –
Update: Я только что изменил это для работы с TiXMLDocument (TinyXML v1) ... и той же проблемой. –
Не могли бы вы переместить решение до ответа, чтобы мы могли получить это из списка без ответа? Благодаря! –