【问题标题】:Spring xslt processing works on a string but not a domSpring xslt 处理适用于字符串但不适用于 dom
【发布时间】:2014-07-08 09:50:41
【问题描述】:

我正在使用 Apache Camel 2.10.4 创建 xml 文档。我想在一个用例中将 xml 视为 html,因此我的 Camel 路由(在 Spring DSL 中定义)使用 xslt 将 xml 文档转换为 html。

xml 在 Java bean 中生成并作为 DOM 文档输出。

如果我在将文档交给 xslt 之前使用 convertBodyTo 将其转换为字符串,那么一切都很好。如果我忽略它,xslt 处理器不会在我的文档中找到元素。

这将返回一个 html 字符串,其中包含一个表格,其中包含我的 TVAnytime xml 文档中每个计划项目的一行:

<route>
  <from uri="direct:show_bn"/>
  <to uri="bean:gen"/>
  <convertBodyTo type="java.lang.String"/>
  <to uri="xslt:tva2html.xslt"/>
  <setHeader headerName="Content-Type">
    <constant>text/html;</constant>
  </setHeader>
</route>

这将返回表格中没有行的html:

<route>
  <from uri="direct:show_bn"/>
  <to uri="bean:gen"/>
  <to uri="xslt:tva2html.xslt"/>
  <setHeader headerName="Content-Type">
    <constant>text/html;</constant>
  </setHeader>
</route>

在 bean 中执行的方法有这个签名:

public org.w3c.dom.Document process();

知道为什么会这样吗?当 xslt 处理获取 DOM 时,我怀疑命名空间感知处理有问题。

【问题讨论】:

    标签: java xml spring xslt apache-camel


    【解决方案1】:

    我刚刚在camel-core中添加了a quick test,我无法重现错误。

    【讨论】:

    • 感谢 Willem,您的测试并未检查转换是否发生。我将在问题中添加更多细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2017-01-06
    • 2019-12-23
    • 2017-03-25
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多