Загрузите данные XML в текстовые поля, в Cocos2D Mac - PullRequest
0 голосов
/ 15 марта 2011

Я играл с XML, изучал некоторые учебные пособия, но моя потребность конкретная. Представьте, что у вас есть CCLabel, и вы хотите загрузить в него данные из файла XML. Таким образом, на сцене x вы загружаете данные из соответствующей части XML. Например, представьте, что вы вводите номер страницы в зависимости от сцены.

У кого-нибудь есть примеры, или кто-нибудь может указать мне на то, что я должен прочитать?

Привет.

1 Ответ

0 голосов
/ 15 марта 2011

Чтобы прочитать XML, взгляните на руководство NSXMLParser .Вы должны управлять структурой XML, но, по сути, когда вы получаете события чтения из анализатора, вам будет просто использовать текст, который он читает.

Предполагая, что ваш XML-файл выглядит как-тонапример:

<scene id=1>
  <label id=1 text="Label Text" />
</scene>
<scene id=2>
  <label id=2 text="Scene 2 Text" />
</scene>

У вас есть пара вариантов - вы можете анализировать файл каждый раз при загрузке сцены, игнорируя все, кроме внутренних элементов id = x (где x - это какая-то ссылка на сцену, связанная св id), или вы можете загрузить весь xml при запуске приложения и сохранить его в некоторой структуре.Я бы предпочел первый вариант.

В качестве базового примера (который еще лучше объясняется в документации, на которую я ссылался), ваша функция чтения элементов может сделать это:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {

  if ( [elementName isEqualToString:@"label"]) {
    //attributeDict contains the attributes of the element,
    //in your case, "text" is one of the keys, and "Label Text" would be the value
    //this would pass the specific label text from the xml file to a function in your scene
    [scene someFunctionForPopulatingLabel:[attributeDict objectForKey:@"text"]];
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...