android - 错误 - llij.ide.plugins.PluginManager - org/w3c/dom/ElementTraversal
问题描述
我为 Android Studio 4.2.1 创建插件
插件使用 DOM 解析器解析 xml 布局文件。当我在 intellij 中启动它时,它工作正常,但是当我在 Android Studio 中启动它时,它会抛出异常
日志文件链接
blued.gradle链接
布局解析器:
import org.w3c.dom.Document
import org.w3c.dom.Node
import org.w3c.dom.NodeList
import java.io.File
import java.io.IOException
import javax.xml.parsers.DocumentBuilderFactory
import kotlin.jvm.Throws
class XmlViewParser {
var pageViewsMap = mutableMapOf<String, Int>()
lateinit var pageViewsTree: NodeList
lateinit var doc: Document
companion object {
val dbFactory = DocumentBuilderFactory.newInstance()
val dBuilder = dbFactory.newDocumentBuilder()
}
@Throws(IOException::class)
fun parse(file: File): Document {
doc = dBuilder.parse(file)
//Normalize the XML Structure; It's just too important !!
doc.documentElement.normalize()
pageViewsTree = doc.documentElement.getElementsByTagName("*")
println(pageViewsTree.length)
val nodeList: NodeList = doc.documentElement.getElementsByTagName("*")
println("${nodeList.length} = nodeList length")
for (i in 0 until nodeList.length) {
val node: Node = nodeList.item(i)
if (node.nodeType === Node.ELEMENT_NODE) {
val nodeName = node.nodeName
// do something with the current element
if (pageViewsMap.containsKey(nodeName)) {
pageViewsMap[nodeName] = pageViewsMap[nodeName]!!.plus(1)
} else {
pageViewsMap[nodeName] = 1
}
}
}
println(pageViewsMap)
return doc
}
}
解决方案
推荐阅读
- f# - 如何在记录上禁用 ToString
- python - Selenium WebDriver:Firefox 未按标签名称获取元素
- java - 带有计数和持续时间的 Storm 中的翻滚窗口
- azure - 具有自定义域的用户的 Azure AD B2B 身份验证错误 - AADSTS65005:当前不支持使用应用程序“我的应用程序”
- java - 使用 java6 从 Tomcat6 调用 JAX-WS RI 2.2 服务
- edi - 有没有办法在 837 中定位分段线?
- angular - 如果输入为空,则禁用按钮
- css - 如何使用 calc() 在颜色值之间切换?
- html - 为什么文本会超出 div?
- mysql - 如果某列中的值重复,则从设置结果中检索一行