简体   繁体   English

如何将地图列表转换为xml

[英]How to convert List of maps to xml

I'm searching an Api to convert List of maps to Xml. 我正在搜索Api将地图列表转换为Xml。

I don't want to use any annotation-based parsers like JaxB. 我不想使用任何基于注释的解析器,如JaxB。 Is there any convenient library to do this? 有没有方便的图书馆这样做?

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);

I want to save it to file like this: 我想将它保存到这样的文件:

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

First point is that it's a rather poor XML design. 首先,它是一个相当差的XML设计。 Giving the maps different names (map1, map2 etc) will almost certainly make it harder to process the XML. 为地图提供不同的名称(map1,map2等)几乎肯定会使处理XML变得更加困难。 But perhaps you don't have any control over the design. 但也许你对设计没有任何控制权。

Next point is that to generate this XML from Java, I wouldn't normally choose to start by constructing a list of maps. 接下来的一点是,要从Java生成此XML,我通常不会选择从构建映射列表开始。 But again, perhaps you don't have any control over the form of the input. 但同样,也许你对输入的形式没有任何控制。

If you're using Saxon, you can convert each Map to an XdmMap using the static method XdmMap.makeMap(Map) ; 如果您正在使用Saxon,则可以使用静态方法XdmMap.makeMap(Map)将每个Map转换为XdmMap ; since the XdmMap is an XdmItem you can then construct a sequence of maps as an XdmValue using the constructor XdmValue(Iterable<? extends XdmItem>) . 由于XdmMapXdmItem然后可以构造图的序列作为XdmValue使用构造XdmValue(Iterable<? extends XdmItem>) You can then pass this XdmValue as a parameter (named say list-of-maps ) to a stylesheet that simply does 然后,您可以将此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