【问题标题】:Convert iCal to HTML or plaintext in Java在 Java 中将 iCal 转换为 HTML 或纯文本
【发布时间】:2010-11-03 18:09:03
【问题描述】:

我正在寻找一个 Java API 来将 ICS(又名 iCal)附件转换为格式良好的 HTML 或纯文本以供显示。理想情况下,它能够处理:

  • 将日期转换为指定时区。
  • 将重复模式扩展到人类可读的句子中。
  • 单个文件中有多个 VCALENDAR 记录。

我在看 iCal4j,它有一个不错的 DOM 解析器,但除了 iCal 之外没有其他方法可以序列化。

【问题讨论】:

    标签: java icalendar


    【解决方案1】:

    抱歉,伙计,如果您在 Google 上四处搜索却一无所获,那么您肯定有一套独特的要求,是时候创新了。

    拿走你所拥有的,想出一些想法,然后尝试一下,这份工作伴随着你!

    【讨论】:

    • @ChaseSeibert 您是否有机会发布您的代码,或者它是专有产品的一部分?
    【解决方案2】:

    我没有找到 ical4j 的更好替代品。我使用它相当成功。不幸的是,正如您所指出的,它所做的只是绑定到 XML,没有其他方法可以将其输出到其他东西。您可以在创建后遍历 DOM 并输出相关文本 - 虽然这看起来有点奇怪,因为您想要的只是 text/html,但我遇到了同样的问题,最后只是解析了 XML。

    iCal4j API 有点奇怪,您可能希望放松解析并启用 Outlook/Notes 兼容性以帮助您一路走来。您可以编写自己的 Parser 并实现 net.fortuna.ical4j.data.CalendarParser 并以这种方式将必要的信息提取为纯文本。我认为默认的net.fortuna.ical4j.data.CalendarParserImpl 大约有 500 行代码,您也可以修改它。

    【讨论】:

      【解决方案3】:

      我制作了一个输出纯文本的 iCalendar API。所有日历元素(VCALENDAR、VEVENT 等)都有一个 toContent() 方法,可以生成纯文本。将多个 VCalendar 对象转换为一个长字符串真的很容易。例如:

         List<VCalendar> calendars = new ArrayList<VCalendar>();
         // add VCalendars here
         // then concated the text of each into one long string
         String allContent = calendars.stream()
             .map(v -> v.toContent())
             .collect(Collectors.joining(System.lineSeparator()));
      

      要导入多个 VCalendar,您只需使用 processITIPMethod 方法通过 PUBLISH 方法导入它们。它可以处理 VCalendar objects.String 的列表。

      如果你想要 HTML,你必须自己做。

      您可以在http://jfxtras.org/查看它

      您可以在https://github.com/JFXtras/jfxtras/tree/8.0/jfxtras-icalendarfx下载它

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 2014-09-08
        • 2015-03-23
        • 2011-07-16
        • 2018-03-17
        相关资源
        最近更新 更多