2

我正在调用一项服务,我得到以下格式的 XML 响应。

如何从此响应中检索单个键下的多个值?我想将所有值存储在List<String>

<p700:item xmlns:p700="http://abc.test.com">
    <p700:key xsi:type="xsd:string">Key1</p700:key>
    <p700:value xsi:type="xsd:string">Value1</p700:value>
    <p700:value xsi:type="xsd:string">Value2</p700:value>
    <p700:value xsi:type="xsd:string">Value3</p700:value>
    <p700:value xsi:type="xsd:string">Value14</p700:value>
</p700:item>
<p700:item xmlns:p700="http://abc.test.com">
    <p700:key xsi:type="xsd:string">Key1</p700:key>
    <p700:value xsi:type="xsd:string">Value1</p700:value>
    <p700:value xsi:type="xsd:string">Value2</p700:value>
</p700:item>
4

3 回答 3

1

创建地图String<-> List<String>

Map<String, List<String>> map = new HashMap<...>();

使用此代码添加值:

List<String> values = map.get( key );
if( null == values ) {
    values = new ArrayList<String>();
    map.put( key, values );
}

values.add( "xxx" );
于 2012-10-08T15:19:50.860 回答
0

如果您不想Map<String, List<String>>在问题下的评论中提及,您可以遍历地图并将它们手动添加到列表中。

List<String> theList = new ArrayList<String>();
String theKey = "The Key";
for(Map.Entry<String, String> entry : map.entrySet()) {
    if(entry.getKey().equals(theKey)) {
        theList.add(entry.getValue());
    }
}

这当然假设您已经将 XLS 中的数据提取到Map<String, String>. 如果你没有,那完全是另一回事。

如果您需要一个包来摄取您的 XLS,请考虑JXLS

于 2012-10-08T15:19:32.543 回答
0

Guava 有一个Multimap接口和一个ListMultimap实现,它是列表结构中包含的多个值的键映射(与集合或排序集合相反)。它本质上是一个Map<K, Collection<V>>. 您还可以在此处找到示例。至于实际解析 XML,这里有很多关于这个的问题,你可以从这个开始。

于 2012-10-08T16:16:32.753 回答