Convert XML String to Map and get the key & value pairs using Java

匿名 (未验证) 提交于 2019-12-03 02:29:01

问题:

I have an XML String. I'm trying to convert that string into map so that I can get key & value. However its not able to convert. Here is my code

String xmlString = "<?xml version="1.0" encoding="UTF-8"?><user>                         <kyc></kyc>                         <address></address>                         <resiFI></resiFI></user>"  def convertStringToDocument = {         xmlString ->             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();             DocumentBuilder builder;             try {                 builder = factory.newDocumentBuilder();                 org.w3c.dom.Document doc = builder.parse(new InputSource(new StringReader(xmlString)));                 return doc;             } catch (Exception e) {                 e.printStackTrace();             }             return null;     }     def populateDocProofsFromWaiversXML = {         xmlString, mandateFlag ->              final List<DocumentProof> documentProofs = new ArrayList<DocumentProof>();             if (xmlString != null) {                 try {                     HashMap<String, String> values = new HashMap<String, String>();                     Document xml = convertStringToDocument(waiversList);                     org.w3c.dom.Node user = xml.getFirstChild();                     NodeList childs = user.getChildNodes();                     org.w3c.dom.Node child;                     for (int i = 0; i < childs.getLength(); i++) {                         child = childs.item(i);                         System.out.println(child.getNodeName());                         System.out.println(child.getNodeValue());                         values.put(child.getNodeName(), child.getNodeValue());                     }                 }  catch (Throwable t) {                     println "error"                     //LOG.error("Could not set document proofs from waivers ", t);                 }             }             return documentProofs;     }

I'd like to get "kyc" as key and the respective value. Any better ideas?

回答1:

package com.test;  import java.io.StringReader; import java.util.HashMap;  import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory;  import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.InputSource;  public class Random {      /**      * @param args      */     public static void main(String[] args) {         HashMap<String, String> values = new HashMap<String, String>();         String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><user><kyc>123</kyc><address>test</address><resiFI>asds</resiFI></user>";         Document xml = convertStringToDocument(xmlString);         Node user = xml.getFirstChild();         NodeList childs = user.getChildNodes();         Node child;         for (int i = 0; i < childs.getLength(); i++) {             child = childs.item(i);             System.out.println(child.getNodeName());             System.out.println(child.getTextContent());             values.put(child.getNodeName(), child.getTextContent());         }      }      private static Document convertStringToDocument(String xmlStr) {         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();         DocumentBuilder builder;         try {             builder = factory.newDocumentBuilder();             Document doc = builder.parse(new InputSource(new StringReader(                     xmlStr)));             return doc;         } catch (Exception e) {             e.printStackTrace();         }         return null;     } }

This will work. Please check :) You can play with DOM.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!