【问题标题】:What's a good way to generate XML from vanilla Adobe CQ5?从 vanilla Adob​​e CQ5 生成 XML 的好方法是什么?
【发布时间】:2023-03-23 22:40:02
【问题描述】:

我当前的实现使用 JSP 生成 XML,但是我使用的不同记录类型的数量已经增加,而且 JSP 模板的数量也变得难以维护。

所以我使用 javax.xml.bind 编写了一个解决方案,但很快发现该代码可以编译但不能在 OSGi 中运行。长话短说,有一个本地编译的依赖项——com.sun.*——默认情况下不包含在 Felix 引导类路径中。包含此依赖关系是修改 sling.properties 以在 org.osgi.framework.bootdelegation 配置行中包含 com.sun.* 的问题。但是,我在大型企业生产环境中工作,因此管理额外配置块的想法并不理想。

那么,我的问题的核心是:有没有更好的方法在 Adob​​e CQ 中以编程方式生成自定义 XML?我应该使用的堆栈中是否有不同的 JAXB impl,而不是 javax.xml.bind?是否还有其他对 CQ/Felix 更友好的 XML 编组 API?

【问题讨论】:

  • 这是在 OSGi 环境中使用 EclipseLink JAXB (MOXy) 的示例:stackoverflow.com/questions/12942750/moxy-error-with-karaf/…
  • 感谢您的信息,布莱斯。我特别在寻找 Adob​​e CQ/Felix 堆栈中已有的即用型解决方案。我已经有了一个需要额外配置管理的解决方案,希望能简化我的生活:)
  • 在 Maven 构建中使用 config 可以解决引导委托问题 - 我知道,我已经做到了。您使用的是哪个版本的 CQ?

标签: java xml jaxb apache-felix aem


【解决方案1】:

我还没有这方面的任何具体文档,但可以包含 com.sun.* 而不更改 Sling 引导委托。

我已经在pom.xml 中完成了一个在 CQ5 中使用 CXF 作为 OSGi 服务的演示项目。它是 maven-bundle-plugin 中的 <dependency><Import-Package>

整个项目可在 GitHub 上的 https://github.com/antonyh/cq5-cxf 上找到 - 它在 CQ5.4 / CQ5.5 上构建、安装和工作时无需更改启动委派。

【讨论】:

    【解决方案2】:

    CQ5.5 osgi bundles 包含 org.apache.cocoon.cocoon-xml 导出包:

    org.apache.cocoon.xml.dom,version=2.0.0
    org.apache.cocoon.xml.sax,version=2.0.0
    

    可用于其他 osgi 包或组件 jsp 文件。

    【讨论】:

      【解决方案3】:

      对于“vanilla” XML,您只需将 .xml 扩展名添加到您的内容 URL,就会输出内容的 XML 表示。这可以通过 HTTP 获取。

      【讨论】:

      • 我不想要“香草”xml。我知道 CQ 有处理程序可以通过将资源上的扩展名从“.html”换成“.xml”或“.json”来导出 xml 和 json(无法控制架构)。我想要的是能够使用 CQ 或 Felix 中的 Java 上下文中可用的软件以编程方式生成与自定义模式匹配的 XML。谢谢。
      • 很公平。尽管不在 java 上下文中,但另一种选择是使用 XSLT 进行转换,使用 Sling output rewriting
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多