package com.android.test.kmmtest
import org.w3c.dom.Element
import org.xml.sax.InputSource
import java.io.File
import java.io.StringReader
import java.nio.charset.Charset
import javax.xml.parsers.DocumentBuilderFactory
/**
* Usage:
*
* author:test
* Date:2023/4/18
* Description:
*/
class TestXmlPaser {
companion object {
fun loadXml(absolutePath: String): List<WebsiteCluster>{
val inputStream = File(absolutePath).inputStream()
var content = inputStream.readBytes().toString(Charset.forName("GBK"))
val websiteClusterList = ArrayList<WebsiteCluster>()
val builderFactory = DocumentBuilderFactory.newInstance()
val builder = builderFactory.newDocumentBuilder()
val inputSource = InputSource(StringReader(content))
val document = builder.parse(inputSource)
val rootNode = document.documentElement
// 遍历 XML 文件中的元素
val elements = rootNode.getElementsByTagName("Cluster")
for (i in 0 until elements.length) {
val element = elements.item(i) as Element
val websiteCluster = WebsiteCluster()
websiteCluster .mstrID = element.getAttribute("ID")
websiteCluster .mstrName = element.getAttribute("Name")
websiteCluster .mstrDefHost = element.getAttribute("DefHost")
websiteCluster .mbBalance = element.getAttribute("Balance")
val websiteHost = websiteCluster .GetNewWebsiteHost()
val chiElements = element.getElementsByTagName("Host")
for (j in 0 until chiElements.length){
val chiElement = chiElements.item(j) as Element
websiteHost ?.mstrID = chiElement.getAttribute("ID")
websiteHost ?.mstrName = chiElement.getAttribute("Name")
websiteHost ?.mstrAddr = chiElement.getAttribute("Addr")
websiteHost ?.mstrPort = chiElement.getAttribute("Port")
}
websiteClusterList .add(websiteCluster )
}
return websiteClusterList
}
}
}
package com.android.test.kmmtest
/**
* Usage:
*
* author:test
* Date:2023/4/18
* Description:
*/
class WebsiteCluster {
var mstrID = ""
var mstrName = ""
var mstrDefHost = ""
var mbBalance = ""
var mHostList = ArrayList<websiteHost>()
fun GetNewWebsiteHost(): websiteHost? {
val theWebsiteHost = tdxTaapiHost()
mHostList!!.add(theWebsiteHost )
return theWebsiteHost
}
class websiteHost{
var mstrID = ""
var mstrName = ""
var mstrAddr = ""
var mstrAddrIPV6 = ""
var mstrPort = ""
var mstrUseIPV6 = ""
var mstrWeightFactor = ""
}
}
测试:
String absolutePath = Environment.getExternalStorageDirectory() + "/Android/data/com.android.test.kmmtest/files/Documents/user/website.xml";
TestXmlPaser.Companion.loadXml(absolutePath);