Разбор с использованием 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>&lt;LoginInformation&gt;&#xD;
  &lt;User&gt;&#xD;
    &lt;UserID&gt;612&lt;/UserID&gt;&#xD;
    &lt;UserName&gt;Demo User&lt;/UserName&gt;&#xD;
    &lt;Email&gt;mssdev@mss-mail.com&lt;/Email&gt;&#xD;
    &lt;CompanyID&gt;17034&lt;/CompanyID&gt;&#xD;
    &lt;CompanyName&gt;PlanET Demonstration Agency&lt;/CompanyName&gt;&#xD;
  &lt;/User&gt;&#xD;
&lt;/LoginInformation&gt;</LoginResult></LoginResponse></s:Body></s:Envelope>

Как видите, все в этом сбежало.

1 ответ

Решение

Это ужасно. Почему бы вам просто не взять содержимое этого тега (например, данные с сущностями) и просто передать его через другой NSXMLParser? Первый синтаксический анализатор будет декодировать объекты, а второй синтаксический анализатор будет представлен с декодированной версией содержимого этого тега.

Другие вопросы по тегам