Kotlin:
Arbeiten mit XML
Wie:
In Kotlin können Sie die integrierten javax.xml.parsers
zum Parsen verwenden:
import javax.xml.parsers.DocumentBuilderFactory
import org.w3c.dom.Document
fun parseXml(xmlData: String): Document {
val dbFactory = DocumentBuilderFactory.newInstance()
val dBuilder = dbFactory.newDocumentBuilder()
return dBuilder.parse(xmlData.byteInputStream())
}
Um XML-Dokumente zu erstellen, könnten Sie javax.xml.transform
verwenden:
import javax.xml.transform.TransformerFactory
import javax.xml.transform.dom.DOMSource
import javax.xml.transform.stream.StreamResult
import org.w3c.dom.Document
import java.io.StringWriter
fun convertDocumentToString(doc: Document): String {
val transformer = TransformerFactory.newInstance().newTransformer()
val result = StringWriter()
transformer.transform(DOMSource(doc), StreamResult(result))
return result.toString()
}
Ein Beispiel für die Ausgabe einer Dokumentenumwandlung in einen String wäre einfach Ihr XML-Inhalt in einem String-Format.
Tiefergehend
XML ist seit den 90er Jahren ein Eckpfeiler der Web- und Softwareentwicklung, bevorzugt wegen seiner Lesbarkeit und strukturierten Hierarchie. Obwohl JSON aufgrund seiner Einfachheit und kleineren Nachrichtengröße für Webdienste an Beliebtheit gewonnen hat, bleibt XML in Unternehmensumgebungen, SOAP-basierten Webdiensten und Konfigurationen (wie Android-Layout-Dateien) weit verbreitet.
Es gibt verschiedene Bibliotheken und APIs neben den in Kotlin/Java integrierten Funktionen für die XML-Verarbeitung, wie Simple XML Serialization und Jackson XML-Modul. Aber javax.xml.parsers
und javax.xml.transform
decken typischerweise die meisten Bedürfnisse ab, ohne externe Abhängigkeiten hinzuzufügen.
Bei der Arbeit mit XML in Kotlin umfassen wichtige Implementierungsdetails den ordnungsgemäßen Umgang mit Zeichenkodierung und das Verwalten von XML-Entitäten, um XML-Injection-Angriffe zu verhindern. Achten Sie auf die Komplexitäten von Namensräumen und die Schemaüberprüfung beim Parsen von XML, um die Datenintegrität zu gewährleisten.