Разбор с использованием NSXMLParser
Мне возвращают XML из веб-службы. По сути, XML выглядит так:
<response>
<data>
More XML here but the it's escaped by XML entities
</data>
</response>
Итак, как вы можете видеть, у меня есть действительный xml, но содержимое внутри тега данных экранировано с помощью сущностей XML. Какой лучший (самый эффективный) способ для меня, чтобы передать это в парсер?
Что я делаю сейчас, так это то, что когда я получаю данные из веб-службы, я конвертирую их в NSString.... затем заменяю "XML-экранированные сущности" на реальные....., а затем конвертирую обратно в NSData... затем скормить его в парсер. Это не очень хорошее решение, поэтому мне было интересно, есть ли лучший способ сделать это?
Благодарю.
Хорошо, вот XML, который я получаю:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><ActivityId CorrelationId="d39007b5-ee69-41c7-a61d-831b456f9ea3" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">aa88d1cd-253c-48d1-abeb-62a880bea806</ActivityId></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><LoginResponse xmlns="http://MSS"><LoginResult><LoginInformation>
<User>
<UserID>612</UserID>
<UserName>Demo User</UserName>
<Email>mssdev@mss-mail.com</Email>
<CompanyID>17034</CompanyID>
<CompanyName>PlanET Demonstration Agency</CompanyName>
</User>
</LoginInformation></LoginResult></LoginResponse></s:Body></s:Envelope>
Как видите, все в этом сбежало.
1 ответ
Это ужасно. Почему бы вам просто не взять содержимое этого тега (например, данные с сущностями) и просто передать его через другой NSXMLParser? Первый синтаксический анализатор будет декодировать объекты, а второй синтаксический анализатор будет представлен с декодированной версией содержимого этого тега.