Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有条目的情况下创建ElementMap?_Java_Android_Simple Framework - Fatal编程技术网

Java 如何在没有条目的情况下创建ElementMap?

Java 如何在没有条目的情况下创建ElementMap?,java,android,simple-framework,Java,Android,Simple Framework,我需要使用simlexml序列化如下映射对象: <attributes> <name>name1</name> <value>value1</value> <name>name2</name> <value>value2</value> <name>name3</name> <value>value3</valu

我需要使用simlexml序列化如下映射对象:

<attributes>
   <name>name1</name>
   <value>value1</value>
   <name>name2</name>
   <value>value2</value>
   <name>name3</name>
   <value>value3</value>
</attributes>

名称1
价值1
姓名2
价值2
名字3
价值3
我试过这个:

@ElementMap(name = "attributes", key = "name", value = "value", inline = true, required = false)
private HashMap<String, String> attributes;
@ElementMap(name=“attributes”,key=“name”,value=“value”,inline=true,required=false)
私有HashMap属性;
但结果似乎是:

   <entry>
      <name>name1</name>
      <value>value1</value>
   </entry>
   <entry>
      <name>name2</name>
      <value>value2</value>
   </entry>
   <entry>
      <name>name3</name>
      <value>value3</value>
   </entry>

名称1
价值1
姓名2
价值2
名字3
价值3

这是否可以使用simplexml创建我需要的元素?

否,XML需要标记来查看元素的组成部分。
但是有标记有什么问题?

不,XML需要标记来查看元素的组成部分。 但是有标签有什么问题?

如runefist所述,将为该类型生成条目标签。但是您可以做的是:通过使用

下面是序列化的示例类:

@Root(name = "Example")
public class Example
{
    @Element
    @Convert(ExampleConverter.class)
    private HashMap<String, String> attributes; // Will use the Converter instead

    // ...

    public static class ExampleConverter implements Converter<HashMap<String, String>>
    {
        @Override
        public HashMap<String, String> read(InputNode node) throws Exception
        {
            // Implement if needed
        }


        @Override
        public void write(OutputNode node, HashMap<String, String> value) throws Exception
        {
            value.forEach((k, v) -> {
                try
                {
                    node.getChild("name").setValue(k);
                    node.getChild("value").setValue(v);
                }
                catch( Exception ex )
                {
                    // Handle Error
                }
            });
        }

    }
}
这将生成以下输出:

<Example>
   <attributes>
      <name>name2</name>
      <value>value2</value>
      <name>name1</name>
      <value>value1</value>
      <name>name0</name>
      <value>value0</value>
   </attributes>
</Example>

姓名2
价值2
名称1
价值1
名称0
价值0
如runefist所述,将为此类型生成条目标记。但是您可以做的是:通过使用

下面是序列化的示例类:

@Root(name = "Example")
public class Example
{
    @Element
    @Convert(ExampleConverter.class)
    private HashMap<String, String> attributes; // Will use the Converter instead

    // ...

    public static class ExampleConverter implements Converter<HashMap<String, String>>
    {
        @Override
        public HashMap<String, String> read(InputNode node) throws Exception
        {
            // Implement if needed
        }


        @Override
        public void write(OutputNode node, HashMap<String, String> value) throws Exception
        {
            value.forEach((k, v) -> {
                try
                {
                    node.getChild("name").setValue(k);
                    node.getChild("value").setValue(v);
                }
                catch( Exception ex )
                {
                    // Handle Error
                }
            });
        }

    }
}
这将生成以下输出:

<Example>
   <attributes>
      <name>name2</name>
      <value>value2</value>
      <name>name1</name>
      <value>value1</value>
      <name>name0</name>
      <value>value0</value>
   </attributes>
</Example>

姓名2
价值2
名称1
价值1
名称0
价值0