将已解析的 SAXParser 输出转换为 HashMap/any 其他数据结构

Convert a parsed SAXParser output to a HashMap/any other data structure

我正在使用 SAXParser 来解析任何通用 XML。下面是我在 Scala 中的代码:-

object saxParser extends App {

  val y = new InputSource(new StringReader("<x><y name='jack'>a</y><y name='mary'>b</y></x>"))
  val factory: SAXParserFactory = SAXParserFactory.newInstance();
  val saxParser: SAXParser = factory.newSAXParser();
  val userhandler: UserHandler = new UserHandler();
  saxParser.parse(y, userhandler);

}


class UserHandler extends DefaultHandler {

  val y = false;
  val tagContentBuffer = new StringBuilder();
  var nodeName = "";

  override def startElement(uri: String, localName: String, qName: String, attributes: Attributes) = {

    println(qName);
    nodeName = qName;
    for (i <- 0 to attributes.getLength) {
      if (attributes.getQName(i) != null) {
        print(attributes.getQName(i) + " = ")
        println(attributes.getValue(i))
      }
    }

  }

  override def characters(ch: Array[Char], start: Int, length: Int) {

    tagContentBuffer.append(new String(ch, start, length))
    println(nodeName + " = " + tagContentBuffer)
    tagContentBuffer.setLength(0)

  }

  override def endElement(uri:String, localName:String, qName:String) {
      println(qName);
    }
}

所以我的输出将是:-

x
y
name = jack
y = a
y
y
name = mary
y = b
y
x

现在我不想打印输出,而是想存储此数据并 return 以 HashMap 或任何其他数据结构的形式将其提供给用户。问题是输入 XML "y" 可以是任何东西。我在这里使用的是示例,但它将是用户输入。

可以通过使用 String,Any 的 MultiHashMap 来完成。使用 MultiHashMap 以便我可以存储 XML.

中的重复键