0

我有一些包含BASE 64 ENCODED PNG 图像的 xml我正在尝试将其解析为某种类型的对象..暂时转换为NSArrayof NSDictionaries,但是我目前没有成功。

这是我的解析委托的一部分:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"GUI"]){
        parsedGUIMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:attributeDict];
    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{

    if ([elementName isEqualToString:@"GUI"]) {
        [parsedDataArrayOfDictionaries addObject:parsedGUIMutableDictionary];

    }


}

完成此操作后,字典中没有保存任何值,因此它只是空的...我在两个 if 语句中添加了一个断点,并且当输入第一个 if 语句时, attributeDict为空。

这是 xml 的样子:

<IC>

  <Reps>

    <GUI>iVBORw0KGgoAAAANSUhEUgAAAiwAAAFKCAMAAAF+68SXAAADAFBMVEUAAAAAADMAAGYAAJkAAMwA

AP8AMwAAMzMAM2YAM5kAM8wAM/8AZgAAZjMAZmYAZpkAZswAZv8AmQAAmTMAmWYAmZkAmcwAmf8A

zAAAzDMAzGYAzJkAzMwAzP8A/wAA/zMA/2YA/5kA/8wA//8zAAAzADMzAGYzAJkzAMwzAP8zMwAz

MzMzM2YzM5kzM8wzM/8zZgAzZjMzZmYzZpkzZswzZv8zmQAzmTMzmWYzmZkzmcwzmf8zzAAzzDMz

zGYzzJkzzMwzzP8z/wAz/zMz/2Yz/5kz/8wz//9mAABmADNmAGZmAJlmAMxmAP9mMwBmMzNmM2Zm

M5lmM8xmM/9mZgBmZjNmZmZmZplmZsxmZv9mmQBmmTNmmWZmmZlmmcxmmf9mzABmzDNmzGZmzJlm

zMxmzP9m/wBm/zNm/2Zm/5lm/8xm//+ZAACZADOZAGaZAJmZAMyZAP+ZMwCZMzOZM2aZM5mZM8yZ

M/+ZZgCZZjOZZmaZZpmZZsyZZv+ZmQCZmTOZmWaZmZmZmcyZmf+ZzACZzDOZzGaZzJmZzMyZzP+Z

/wCZ/zOZ/2aZ/5mZ/8yZ///MAADMADPMAGbMAJnMAMzMAP/MMwDMMzPMM2bMM5nMM8zMM//MZgDM

ZjPMZmbMZpnMZszMZv/MmQDMmTPMmWbMmZnMmczMmf/MzADMzDPMzGbMzJnMzMzMzP/M/wDM/zPM

/2bM/5nM/8zM////AAD/ADP/AGb/AJn/AMz/AP//MwD/MzP/M2b/M5n/M8z/M///ZgD/ZjP/Zmb/

Zpn/Zsz/Zv//mQD/mTP/mWb/mZn/mcz/mf//zAD/zDP/zGb/zJn/zMz/zP///wD//zP//2b//5n/

/8z///8AAAANDQ0aGhooKCg1NTVDQ0NQUFBdXV1ra2t4eHiGhoaTk5OhoaGurq67u7vJycnW1tbk

5OTx8fH///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAABGUgBlAAAACXBIWXMAAAsSAAALEgHS3X78AAAACXRFWHRDb21tZW50AACJKo0G

AAALi0lEQVR4nO2da3LiOBRGU8UO2EzvL396CbORbCIrcJVN3p0HXsXwatrAZ1uWr2TJPocehhAh

Xz4fhCMU564w4W5A24cHk25qm246GNLNyqabDvKtJv9uOvKcppsBPU3QjY9+s69mdSKNanbcF8lk

M303w6CbK9b//g3o5semmrJMqpsqqWqidtPVrI8h3Xw7dTOGOXYzoJe6/SB90KG+RS1F7dzL/YBe

/WqhF3rJffsdfff5Yq1eLXrpOWqidtPVrI8h3Xw7dWqidtPVrI8h3Xw7dWqidPaL3kuVUC1Ovbz1

Hn/39vLLoZfgh9/z6+WahwNDHxWmlsKnlFC1dH080EqoWnygFo1bLe0/67UwbE79RH65HBnwZBeV

y4GVI1Fq8diII5619D3vOL6s/LfVx7haWktaeC62UIuGWjTUosm6loBQi4ZaNHdfB74tGfwTzN9a

Tv/flLaMqcWUsuyYT2snTC2VVzCBckmpllnuo6ddxJuRWNXy5vmabOIzxtx93PJcVZW425l3z2eS

1HvA1AU0mH0ttde0d8g5+MGPClNL7VNKwM8Dhj8oUC0dy/zbCfbZhMdjMqrFa250/7gQtXhVUoTJ

xauQYim1DC9pGbUMh1o0oWsZ8rnaknIZwuJqcfy4cXG5OLLQWvqWqONLC9SiiV5Lx+TTonPpgFpk

G8a6Fqjl1DChY6nrhtSSai3naawEfPnXnFqohVrGQy0aatFQi4ZaNPnUcv5Vz1+Nf8c1bd+2a9r6

a9Eccqk353JNKLtradsXp/u/jZfXbUfUYsuuGGqhFpNa1tRCLdQSuxaDZaobw1o6fs/fjYRqGb+P

1la1lH65iPW3VVW9jVm/W37a7SML8jn21lCLZgm12PPQIPjG8omlkYvv71q5k1EsRbxUsoqliJZK

XrEUsVLJLJYiUiq5xeL1buvBuFgCnnmlhTxiuY8azGqVSSxGVbhDLBJikWQXi+tJuMaRXSxxIBYJ

sUjyjsX3d1V7NsdxSwvEIiEWyVxiWXn+SZGWzRGL3Nx8YjGFWCRzjMUgolnGMnLWakaHc9jS24RY

ZBNikU0MZq3mHosnxCIhFsmiYnGcteK4pQ1ikRCLZKGxdE7PzHS+hVhkE4PpGWKREItsTiy3s1bL

PZzDFq/mxEIs7s2JhVjcm2cRS3yIRUIsEmKREIuEWCTEIiEWCbFIiEUyJpb12vW6uHv5S/n8ki5V

Wf2MimXg7m82/yw3P/++WludBc6Kr3I7SSxJc/rLscRyyemUf8Ryyf6PxhLLDftMKmK5xvtFdHrH

HfagjGLxfBHNPRbPF9H8Y8GWG3gRSXgRSZJ8EdX1dkc9IUnG8nYsavQZScdCLIotsQjKT4+foI1j

uZhvSSCWp3J/HSuWj/csLttTvczlSohFQiwSYpEQy5RkE0vNSaclMVPJKJaaWCQRz1CeUyx1PFly

iqWIJ0tWsdTRZMkqliKaLHnFUseSJa9YiliyZBZLHUmWzGIpIsmSXSyRtkMsEmKRjIwlzFmUW7d2

Tyxqa7nEEhtikRCLhFgkxCIhFkl2sVieiryN+wxjiUJ+sWCLIs7hLrFIiEVCLBJikWQdS7iI8o4l

0N8szXC+hVgkvIgkxCIhFgmxSIhFQiyS9ljsQsp8YsHgD+7MZxpK3y5qbBG3bSEWCbFIiEVCLBJi

kcwzlpGrhOY630IsYSAWCbFIiEVCLBJikcw9Fq/lMPOfWFj8NFRbc2zpaT4AYpEQi4RYJMQiWVIs

AyJaVCyuq4TmP99CLBbN/0IsEmKREIuEWCTEIlluLB0PXtbEwoDFU//ZFNtLarF0Lp5ari09EIuE

WCTEIiEWCbFIiKW4XSXEfMvxG8TiBrFIiEVCLBJikRCLhFgkxCIhFgmxSIhFQiyS7GKJA7FIiEVC

LBJikRCLhFgkxCIhFgmxSIhFQiwSYpEQi4RYJMQiIRYJsUiIRTImlvWv9fX1Wl8vKpZi7Xxd3H2f

+Pra/UuV7+ixPJ+oqpeX58blZX359aSX57J8GxTLXfM5+sRyftBb+Sk6SYb38k8xRSxFsSnfG338

SiyXYvM0TSx7Y/6xLpNjM1Est50kwyGXd2K54ugLsVxBLBJikRCLhFgkxCIZGUtdEEtLLEXjTmI5

QCx7OmIpGt8ilqsGxNIBsUiIpQNikRBLB8QiIZYOiEWyhFj8IZaBj7+IZVvv2U5IkrGUZbW7lJuJ

</GUI>

  </Reps>

</IC>

我希望有人知道如何帮助我从这个 XML 中获取数据,这样我就可以使用类似于下面的代码来解码我的 png

[Base64 initialize];
NSData *data = [Base64 decode:img];
cell.image.image = [UIImage imageWithData:data];

任何帮助将不胜感激。

4

1 回答 1

2

您可能不想打扰NSDictionary. 我不在我的 Mac 上,但请尝试以下操作:

  1. 在您的委托中实现foundCharacters回调(NSXMLParserDelegate 协议参考)。
  2. foundCharacters实现中检查您是否在GUIdidStartElement元素的didEndElement调用之间:如果是,则将字符附加到实例中。NSMutableString
  3. 然后,您可以使用类似thisdidEndElement的方式初始化NSData实例。NSMutableString

这应该能让你到达你需要的地方。

于 2013-05-23T01:56:43.353 回答