有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以使用XSLT和JXPath转换JavaBean?

假设我有一个香草爪哇豆:

class Person {
  String firstName;
  String lastName;
  ...
}

现在假设我想把它转换成另一个javabean:

class Human {
  String name;
  ...
}

我目前正在使用JXPath帮助我将一个转换为另一个:

JXPathContext personContext = JXPathContext.newContext(person);
JXPathContext humanContext = JXPathContext.newContext(new Human());
humanContext.setValue("name", personContext.getValue("firstName") +
                              personContext.getValue("lastName"));

有没有一种方法可以将eg XSLT与JXPath结合使用来指定这些转换,而不是手工完成这类工作


共 (1) 个答案

  1. # 1 楼答案

    我认为仅使用JXPath是不可能的,因为这是一个XPath实现,而不是XSLT实现。XSLT使用XPath作为语言的一部分,但它不仅仅是这样

    您可以尝试将bean序列化为XML,使用XSLT转换XML,并将生成的XML反序列化为目标类。因此,对于person对象,您可能会

    <person>
        <firstName>John</firstName>
        <lastName>Doe</lastName>
    </person>
    

    您可以将XSLT与这样的模板结合使用

    <xslt:template match="/person">
        <human>
            <name><xslt:value-of select="./firstName"/> <xslt:value-of select="./lastName"/></name>
        </human>
    </xslt:template>
    

    这将产生如下结果文档:

    <human>
        <name>John Doe</name>
    </human>
    

    然后,可以将该文档反序列化为Human类的实例

    注意:bean的XML表示是为了这个示例而构建的。实际上,您可以使用java。豆。XMLEncoder,或者您可以寻找任何其他现有的Java/XML绑定实现(JAXB等)