我遇到xml转换问题。我正在使用Saxon,xslt 2.0,在我的对象中我有一个整数列表:
<Object>
<accounts>
<xsl:value-of select="CAOptDtls/BOwnrId/PrtryId" />
<accounts>
<Object>
以前它是单整数,它工作正常,现在我想使用整数列表,现在我试图使它成为变换器中的列表,但我失败了。
如果我尝试过:
<accounts>
<item>
<xsl:value-of select="CAOptDtls/BOwnrId/PrtryId" />
</item>
</accounts>
例外:
com.thoughtworks.xstream.converters.ConversionException: item : item
---- Debugging information ----
message : item
cause-exception :
com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : item
class : java.util.ArrayList
required-type : java.util.ArrayList
converter-type :
com.thoughtworks.xstream.converters.collections.CollectionConverter
path : /Object/accounts/item
line number : 111
class[1] : pl.test.Object
converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
version : not available
如果我只尝试使用xsl:value-of,我的JUnit测试说他想要这样的东西:
org.junit.ComparisonFailure: expected:<...
<accounts[ class="java.util.Arrays$ArrayList">
<a class="java.lang.Integer-array">
<int>320</int>
</a]>
</accounts> but was:<...
<accounts[>
<int>320</int]>
</accounts>
用Google搜索了很长时间但仍然没有得到答案。
//编辑
好的,所以,这是我xsl的一部分 -
<Object>
...
<accounts>
<xsl:value-of select="CAOptDtls/BOwnrId/PrtryId" />
</accounts>
...
</Object>
Java中的My Object有一个集合:
List<Integer> accounts = new ArrayList<>();
要转换的xml:
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
<CAOptDtls>
<BOwnrId>
<PrtryId>320</PrtryId>
</BOwnrId>
</CAOptDtls>
...
</Document>
现在尝试按上述方法进行转换,错误是:
org.junit.ComparisonFailure: expected:<...
<accounts[ class="java.util.Arrays$ArrayList">
<a class="java.lang.Integer-array">
<int>320</int>
</a>
</accounts]>
</Object>> but was:<...
<accounts[/]>
</Object>>