如何在xslt中创建List <integer>

时间:2017-06-26 18:00:11

标签: java xml xslt

我遇到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>>

0 个答案:

没有答案