commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jaime Garza" <Jaime.Ga...@newScale.com>
Subject [Betwixt]: HashMap to XML and back
Date Fri, 29 Apr 2005 21:49:54 GMT
Can somebody help me learn how to read a HashMap back with
betwixt/digester?

When I use betwixt to write a HashMap I get a nice XML, but when I try
to read it back, I only get a null.  I am using betwixt 0.6 and digester
1.5.  Yes, this is a map of maps. This is the code

 

package com.newscale.test;

 

import java.util.Map;

import java.io.StringWriter;

import org.apache.commons.betwixt.io.BeanWriter;

import java.beans.IntrospectionException;

import org.xml.sax.SAXException;

import java.io.IOException;

import java.util.HashMap;

import org.apache.commons.beanutils.BeanUtils;

import java.lang.reflect.*;

import java.io.StringReader;

import org.apache.commons.betwixt.io.BeanReader;

 

public class Betwixt {

  private String convertToString(HashMap map) throws
IntrospectionException, SAXException, IOException {

    if (map == null) {

      return null;

    }

    StringWriter outputWriter = new StringWriter();

    BeanWriter beanWriter = new BeanWriter(outputWriter);

    beanWriter.enablePrettyPrint();

    beanWriter.getBindingConfiguration().setMapIDs(false);

 
beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimi
tives(false);

 

    beanWriter.write("map", map);

    return outputWriter.toString();

  }

  

  private HashMap convertToMap(String s) throws SAXException,
IOException, IntrospectionException {

    StringReader reader = new StringReader(s);

    BeanReader beanReader = new BeanReader();

    beanReader.getBindingConfiguration().setMapIDs(false);

 
beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimi
tives(false);

    beanReader.registerBeanClass("map", java.util.HashMap.class);

    HashMap map = (HashMap) beanReader.parse(reader); // returns null
always!

    return map;

  }

  

  public static void main(String[] args) throws Exception {

    HashMap hash = new HashMap();

    Map sub1 = new HashMap();

 

    sub1.put("sub1i", new Integer(3));

    sub1.put("sub1d", new Double(5.0));

    sub1.put("sub1s", "this is a test & check");

 

    hash.put("sub1", sub1);

    Betwixt betwixtTester = new Betwixt();

    String xml1 = null;

    String xml2 = null;

    xml1 = betwixtTester.convertToString(hash);

    HashMap hash2 = betwixtTester.convertToMap(xml1);

    xml2 = betwixtTester.convertToString(hash2);

    System.out.println(xml1);

 
System.out.println("====================================================
==================");

    System.out.println(xml2);

  }

 

}

 

Output:

  <map>

    <entry>

      <key>sub1</key>

      <value>

        <entry>

          <key>sub1i</key>

          <value>3</value>

        </entry>

        <entry>

          <key>sub1s</key>

          <value>this is a test &amp; check</value>

        </entry>

        <entry>

          <key>sub1d</key>

          <value>5.0</value>

        </entry>

      </value>

    </entry>

  </map>

======================================================================

null


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message