7

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

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

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

4

3 回答 3

2

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

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

于 2009-06-17T17:48:15.313 回答
2

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

拿走你所拥有的,想出一些想法,然后尝试一下,工作就来了!

于 2009-06-19T23:39:56.107 回答
1

我制作了一个输出纯文本的 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下载它

于 2016-11-03T01:44:20.097 回答