首页 > 解决方案 > 错误 - 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
    }
}

标签: androidxml-parsingandroid-gradle-plugin

解决方案


推荐阅读