Как добавить элементы из текста с помощью kotlinx.html? [Дубликат]

0
задан voddan 12 December 2015 в 10:05
поделиться

3 ответа

Просто используйте unsafe внутри вашего тега, чтобы предотвратить кодирование HTML.

body {
    unsafe {
       +"""<form class="formClass"/>"""
    }
}
6
ответ дан Mathias Parger 16 August 2018 в 04:29
поделиться

Все, что внутри appendHTML будет закодировано. Если вы хотите добавить исходный текст, вы можете использовать appendln.

Пример из Потоковая передача · Kotlin / kotlinx.html Wiki · GitHub :

val text = StringBuilder {
    appendln("<!DOCTYPE html>")
    appendHTML().html {
        body {
            a("http://kotlinlang.org") { +"link" }
        }
    }
    appendln()
}
0
ответ дан mfulton26 16 August 2018 в 04:29
поделиться

Решение A (ограниченное) было бы взломать DSL и использовать onTagContentUnsafe:

this.consumer.onTagContentUnsafe { +"hello"}

Каждый Tag обладает свойством consumer. Это объект, который действительно имеет дело с DOM. В случае генерации HTML этот объект HTMLStreamBuilder. У него есть метод onTagContentUnsafe, который дает вам доступ к построителю потока.

Я использую вспомогательную функцию:

fun Tag.rawHtml(html: String) {
    assert(this.consumer is HTMLStreamBuilder)
    this.consumer.onTagContentUnsafe { +"$html\n"}
}

Как отмечалось в @orangy, это решение работает генерация кода, но вы не можете использовать его для создания JVM DOM и т. д. Для этого есть билет: https://github.com/Kotlin/kotlinx.html/issues/8

0
ответ дан voddan 16 August 2018 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: