Данные Html в JSON в строку с использованием Swift 4

Я пытаюсь декодировать данные html в простую строку, но получаю весь синтаксис html вместе с Я использую метод получения alamofire Ссылка на html данные http://laorotava.municipiointeligente.es/webservices/getNewsAndroid.php?type=audioguides1_es

Любая помощь будет оценена

Я пробовал все коды и расширения при переполнении стека, но не смог получить должных результатов.

 let urlString = "http://laorotava.municipiointeligente.es/webservices/getNewsAndroid.php?type=audioguides1_es"
        Alamofire.request(urlString).response { response in
            if let data = response.data{
                let str = data.html2AttributedString
                print(str)
            }
        }

Я получаю строку вместе с синтаксисом html

я хочу этот текст

Te damos la bienvenida a La Orotava, el pueblo con mayor desnivel de España. Abarca desde las playas del Rincón, a nivel del mar, hasta los 3718 metros del pico Teide, el punto más alto de España, cuya última erupción fue en 1798. Se cree que el nombre Orotava deriva de la palabra Arautápala, con el que denominaban a este territorio los antiguos aborígenes guanches. Tras la conquista, fue declarada Villa por el rey Felipe IV en 1648. Te invitamos a recorrerlo a través de dos rutas diferentes: La Orotava Secreta o Ruta Azul y La Orotava Legendaria o Ruta Verde.Cada ruta dura aproximadamente una hora y media a paso normal y sus contenidos son diferentes. Si dispones de tiempo, te recomendamos que hagas las dos rutas por separado para disfrutar de rincones, leyendas y secretos que La Orotava te ofrece. A lo largo del recorrido encontrarás, incrustadas en el suelo, placas circulares de metal dorado. Cada placa indica el número de pista en el color de la ruta a la que pertenece. Cuando te encuentres frente a estas placas, pulsa el número de pista correspondiente. Si no dispones del tiempo suficiente, te recomendamos que elijas sólo una ruta. Pregunta al personal de la Oficina Municipal de Turismo, te atenderán encantados y te ayudarán a elegir una de ellas en función de tus intereses. También tienes a tu disposición folletos y otros materiales en la oficina para ayudarte en esta decisión. Ten en cuenta que La Orotava está llena de calles pendientes con subidas y bajadas muy pronunciadas. Si eliges la ruta de La Orotava Legendaria, o Ruta Verde, te encontrarás un recorrido con menos desnivel. Por otro lado, la Ruta de La Orotava Secreta o Ruta Azul ofrece a los más aventureros vistas panorámicas únicas desde las mayores alturas a las que llega la visita. Te recomendamos realizar las rutas en horario de oficina para que tengas la oportunidad de encontrar abiertos el mayor número de espacios posible. Las iglesias suelen estar abiertas en horario de culto. Recuerda que tienes a tu disposición un botón de pausa y otro de repetición de los últimos 10 segundos en el reproductor, para hacerte más cómodo el recorrido. Cualquiera de las dos rutas está llena de sorpresas y rincones maravillosos. Adelante, pulsa la ruta de tu elección y adentrémonos juntos en este paseo por La Orotava.

именно то, что вы хотите, пожалуйста, обновите свой вопрос с примером

Mantu 16.07.2019 07:41

хорошо, я обновлю

Meet Ios Developer 16.07.2019 07:43

я пробовал не помогает

Meet Ios Developer 16.07.2019 07:45

я могу сделать неправильный метод, пожалуйста, помогите мне

Meet Ios Developer 16.07.2019 07:49

приведенная выше ссылка сделает то же самое для вас, вы получите вывод, как хотите

Mantu 16.07.2019 08:03

@NikunjKumbhani Я думаю, что у него все еще есть проблема

Meet Ios Developer 16.07.2019 09:08
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
6
491
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно создать NSAttributedString из строки HTML.

extension String {
    var htmlToAttributedString: NSAttributedString? {
        guard let data = data(using: .utf8) else { return NSAttributedString() }
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            return NSAttributedString()
        }
    }
    var htmlToString: String {
        return htmlToAttributedString?.string ?? ""
    }
}

Всякий раз, когда вы хотите использовать текст HTML:

textView.attributedText = htmlString.htmlToAttributedString

не влияет я пробовал

Meet Ios Developer 16.07.2019 08:19

мимо вашей строки HTML здесь

Hitesh Borse 16.07.2019 11:17

я сделал Никундж Кумбхани помог мне

Meet Ios Developer 16.07.2019 11:21

хорошо, из-за NSAppTransportSecurity?

Hitesh Borse 16.07.2019 11:48

Используйте расширение ниже для данных и строк

extension Data {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: self, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            print("error:", error)
            return  nil
        }
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

extension String {
    var html2AttributedString: NSAttributedString? {
        return Data(utf8).html2AttributedString
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

Реализация в вашем коде должна быть такой.

 let urlString = "http://laorotava.municipiointeligente.es/webservices/getNewsAndroid.php?type=audioguides1_es"
        Alamofire.request(urlString).response { response in
            if let data = response.data{
                let str:NSAttributedString = data.html2AttributedString //call the extension method here
                print(str)
            }
        }

Я попробовал это, но он снова печатается с синтаксисом html и дает сбой при назначении данных для текстового представления.

Meet Ios Developer 16.07.2019 08:32

попробуйте это пусть str:NSAttributedString = data.html2AttributedString

Mantu 16.07.2019 08:34

не помогает даже с синтаксисом html

Meet Ios Developer 16.07.2019 08:46
Ответ принят как подходящий

Ваш ответ здесь

extension String{

    var htmlToAttributedString: NSAttributedString? {
        guard let data = data(using: .utf8) else { return NSAttributedString() }
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            return NSAttributedString()
        }
    }

    var htmlToString: String {
        return htmlToAttributedString?.string ?? ""
    }
}

Вызов API

let urlString = "http://laorotava.municipiointeligente.es/webservices/getNewsAndroid.php?type=audioguides1_es"

        Alamofire.request(urlString, method: .get, parameters: nil).responseJSON { response in

                do {

                    if let jsonDict = try JSONSerialization.jsonObject(with: (response.data as Data?)!, options: []) as? [String:AnyObject]{

                        if let body = jsonDict["body"] as? String{
                            print(body.htmlToString) // Your output is Here
                        }
                    }

                } catch _ {
                    print("Exception!")
                }
        }

Выход:

Спасибо за ваши усилия, но в моем конце произошел сбой. Я все еще выясняю, ``` NSURLConnection завершен с ошибкой - код -1002 ```

Meet Ios Developer 16.07.2019 09:04

@MeetIosDeveloper Обратитесь к этому stackoverflow.com/a/32506939/10150796 Поскольку недавно я пишу этот код в своем проекте и делюсь им, он работает нормально, вы также можете увидеть результат здесь.

Nikunj Kumbhani 16.07.2019 09:14

Давайте продолжить обсуждение в чате.

Nikunj Kumbhani 16.07.2019 09:25

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