如何解析自定义用户的标签?

时间:2015-04-27 11:54:40

标签: java simple-framework

注释@ElementMap允许将此类标记解析为地图:

<field key="key">value</field>

是否可以将这类标签解析为地图?:

<key>value</key>

我尝试为我的类编写自定义转换器,但它仍然不允许在xml中使用自定义用户的标记。

1 个答案:

答案 0 :(得分:1)

  

我尝试为我的班级编写自定义转换器,但它仍然不允许在xml中使用自定义用户标记。

你能提供更多细节吗?

以下是如何实施转换器的示例:

@Root
@Convert(Example.ExampleConverter.class)
public class Example
{
    private Map<String, String> map;

    // ...

    static class ExampleConverter implements Converter<Example>
    {
        @Override
        public Example read(InputNode node) throws Exception
        {
            Example value = new Example();
            value.map = new HashMap<>();

            InputNode childNode = node.getNext();

            while( childNode != null )
            {
                value.map.put(childNode.getName(), childNode.getValue());
                childNode = node.getNext();
            }

            return value;
        }

        @Override
        public void write(OutputNode node, Example value) throws Exception
        {
            for( Entry<String, String> entry : value.map.entrySet() )
            {
                node.getChild(entry.getKey()).setValue(entry.getValue());
            }
        }
    }
}

使用示例:

Serializer ser = new Persister(new AnnotationStrategy());

final String xml = "<example>\n"
        + "   <key1>value1</key1>\n"
        + "   <key2>value2</key2>\n"
        + "   <key3>value3</key3>\n"
        + "</example>";

Example e = ser.read(Example.class, xml);
System.out.println(e);

输出(取决于toString() - 实施:

Example{map={key1=value1, key2=value2, key3=value3}}