繁体   English   中英

如何将地图列表转换为xml

[英]How to convert List of maps to xml

我正在搜索Api将地图列表转换为Xml。

我不想使用任何基于注释的解析器,如JaxB。 有没有方便的图书馆这样做?

List<Map<String, Object>> myList = new ArrayList(); 

Map<String,String> map1 = new HashMap<String,String();
map.put("name","mike");
map.put("surname","smith");

Map<String,String> map2 = new HashMap<String,String();
map.put("name","bob");
map.put("surname","smith");

myList.add(map1);
myList.add(map2);

我想将它保存到这样的文件:

<map1>
  <name>mike</name>
  <surname>smith</surname>
</map1>
<map2>
  <name>bob</name>
  <surname>smith</surname>
</map2>

首先,它是一个相当差的XML设计。 为地图提供不同的名称(map1,map2等)几乎肯定会使处理XML变得更加困难。 但也许你对设计没有任何控制权。

接下来的一点是,要从Java生成此XML,我通常不会选择从构建映射列表开始。 但同样,也许你对输入的形式没有任何控制。

如果您正在使用Saxon,则可以使用静态方法XdmMap.makeMap(Map)将每个Map转换为XdmMap ; 由于XdmMapXdmItem然后可以构造图的序列作为XdmValue使用构造XdmValue(Iterable<? extends XdmItem>) 然后,您可以将此XdmValue作为参数(名为list-of-maps )传递给一个简单的样式表

<xsl:param name="list-of-maps" as="map(xs:string, xs:string)*"/>
<xsl:template name="xsl:initial-template">
  <xsl:for-each select="$list-of-maps">
    <xsl:element name="map{position()}">
      <name>{?name}</name>
      <surname>{?surname}</surname>
    </xsl:element>
  </xsl:for-each>
</xsl:template>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM