2
我想将xml文件转换为java映射。 XML使用xstream映射键值xml对到java映射
<Person>
<ID>123</ID>
<Demographics>
<LastName>ABC</LastName>
<FirstName>XYZ</FirstName>
</Demographics>
<Married>YES</Married>
</Person>
的XStream的代码如下:
final XStream xstream = new XStream();
xstream.alias("Person", Map.class);
xstream.alias("Demographics", Map.class);
xstream.registerConverter(new MapEntryConverter());
final Map<String, Object> map2 = (Map<String, Object>) xstream.fromXML(xml);//where xml is above defined string.
定制MapEntryConverter是:
public class MapEntryConverter implements Converter
{
public boolean canConvert(final Class clazz)
{
return AbstractMap.class.isAssignableFrom(clazz);
}
public void marshal(final Object value, final HierarchicalStreamWriter writer, final MarshallingContext context)
{
final AbstractMap<String, String> map = (AbstractMap<String, String>) value;
for (final Entry<String, String> entry : map.entrySet())
{
writer.startNode(entry.getKey().toString());
writer.setValue(entry.getValue().toString());
writer.endNode();
}
}
public Object unmarshal(final HierarchicalStreamReader reader, final UnmarshallingContext context)
{
final Map<String, String> map = new HashMap<String, String>();
while (reader.hasMoreChildren())
{
reader.moveDown();
map.put(reader.getNodeName(), reader.getValue());
reader.moveUp();
}
return map;
}
}
所以地图现在仅由ID和已婚的作为键 - 值对。它不会将人口统计信息父级转换为其相应的名称值对。
我想所有的标签名称作为键和他们的值作为地图值。