gpt4 book ai didi

java - XSLT - 迭代列表时访问 Java 对象时出错

转载 作者:行者123 更新时间:2023-12-01 17:12:13 24 4
gpt4 key购买 nike

我有以下 XML 负载

<Info>
<Details>
<Name>Sherlock Holmes</Name>
<Address>221b Baker St</Address>
<City>London</City>
</Details>
</Info>

Java POJO如下:

package java:com.sample.domain;

public class AResponse {

private String code;

public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}

在一个单独的类方法中,我有一个 ArrayList,其中填充了带有代码的 AResponse 对象

ArrayList:“aList”通过代码值为 K1、J4、B3 的对象传递

我想通过迭代 aList 并构造元素标签来构造以下有效负载

<Info>
<Results>
<Code>K1</Code>
<Code>J4</Code>
<Code>B3</Code>
</Results>
<Details>
<Name>Sherlock Holmes</Name>
<Address>221b Baker St</Address>
<City>London</City>
</Details>
</Info>

我尝试了以下 XSLT,但在启动时出现错误:XsltErrorListener:解析 XSLT 文件时出现 fatal error :找不到名为 Q{java:com.sample.domain.AResponse}getCode() 的 1 参数函数。外部函数调用已被禁用;

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns0="http://www.openuri.org/mySchema" xmlns:list="java.util.List"
xmlns:a="java:com.sample.domain.AResponse">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" />
<xsl:strip-space elements="*" />

<xsl:template match="/|@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>

<xsl:param name="aList" />

<xsl:template match="Info">
<xsl:element namespace="http://www.openuri.org/mySchema" name="Results">
<xsl:for-each select="$aList">
<xsl:variable name="aResp" select="." />
<xsl:element namespace="http://www.openuri.org/mySchema" name="Code">
<xsl:value-of select="a:getCode($aResp)" />
</xsl:element>
</xsl:for-each>
</xsl:element>
<xsl:copy-of select="." />
</xsl:template>

</xsl:stylesheet>

提前致谢!

最佳答案

错误消息看起来像是 Saxon,该消息表示外部函数调用已被禁用。因此,我们需要看看您如何调用转换。默认情况下,外部函数调用不会被禁用,因此它必须是您在调用中执行的操作。

关于java - XSLT - 迭代列表时访问 Java 对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61416359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com