将已解析的 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.
中的重复键