问题
不是解析本地 xml 文件,
而是要将 xml 文件中的所有内容(包含格式,标签等),直接转换成 String。
与前端H5页面交互时, iOS 在请求远程 xml 文件耗时太长(有时需要4~5s),所以采用本地下载,然后传给前端的方式。
前端在加载时,需要内容格式保持不变,所以需要将 xml 文件内容 转换成 String
解决
其实就是本地读取文件流,存储成 String ,传给前端就解决了。和解析xml无关。
/**
* xml 转换 String ,并回传结果
*/
private fun xml2String(data: List<LibraryXmlEntity>?, bookName: String) {
if (data != null && data.isNotEmpty()) {
val jsonPages = JSONObject()
for (item in data) {
val xmlPath = item?.fullPath
/**
* 读取 xml 文件,转换成 String
*/
try {
val input = FileInputStream(File(xmlPath))
val length = input.available()
val buffer = ByteArray(length)
input.read(buffer)
xmlString = String(buffer)
} catch (e: Exception) {
callBack?.error()
}
jsonPages["${item.pageName}"] = xmlString
}
buildJson(bookName, jsonPages?.toString())
}
}
核心代码
/**
* 读取 xml 文件,转换成 String
*/
try {
val input = FileInputStream(File(xmlPath))
val length = input.available()
val buffer = ByteArray(length)
input.read(buffer)
xmlString = String(buffer)
} catch (e: Exception) {
callBack?.error()
}