【问题标题】:XML DOM parsing returns only the first nodeXML DOM 解析只返回第一个节点
【发布时间】:2021-05-24 22:02:46
【问题描述】:

我正在尝试解析气象数据 (https://www.arpa.veneto.it/bollettini/meteo60gg/0083.xml)。我想为每个传感器提取 VM、VMIN 和 VMAX,但不幸的是,使用以下代码,只提取了第一个节点(“Temperatura a 2m”):您知道为什么会这样吗?

val xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(data)
        xmlDoc.documentElement.normalize()

        val SENSOR= xmlDoc.getElementsByTagName("SENSOR")

        for(i in 0..SENSOR.length - 1){
            var SensorNode : Node = SENSOR.item(i)

            if (SensorNode.getNodeType() === Node.ELEMENT_NODE) {
                var SensorElem = SensorNode as Element
                var TIPOsensorescelto = 
                val SENSORchosen = SensorElem.getElementsByTagName("PARAMNM").item(0).textContent
            val istantList = SensorElem.getElementsByTagName("DATI")

            for(i in 0..istantList.length - 1) {
                var istantNode: Node = istantList.item(i)
                if (istantNode.getNodeType() === Node.ELEMENT_NODE) {
                    val elem = istantNode as Element
                    val mMap = mutableMapOf<String, String>()
                    for(j in 0..elem.attributes.length - 1)
                    {
                        mMap.putIfAbsent(elem.attributes.item(j).nodeName, elem.attributes.item(j).nodeValue)
                    }
                    
                    /// saving stuff
                 }
              }
            }
        }

【问题讨论】:

  • 可能问题出在 istantList.length 中,因为当我用数字替换它时它可以工作:关于如何修复它的任何想法?
  • 编辑了一些实现,但问题没有解决:它可能与“SensorElem.getElementsByTagName("DATI")”有关吗?

标签: xml kotlin parsing dom


【解决方案1】:

已解决:问题在于保存内容,因为我试图保存仅存在于第一个节点的标签。报告的代码对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 2023-03-13
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多