代码之家  ›  专栏  ›  技术社区  ›  Chase Seibert

在Java中转换为HTML或明文

  •  7
  • Chase Seibert  · 技术社区  · 15 年前

    我正在寻找一个Java API,以将ICS(AKA)附件转换成格式良好的HTML或明文,以便于显示。理想情况下,它能够处理:

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

    我在看iCal4j,它有一个很好的DOM解析器,但是除了iCal,没有其他方法可以序列化到任何东西。

    3 回复  |  直到 8 年前
        1
  •  2
  •   BakerTheHacker    15 年前

    对不起,伙计,如果你到处搜索,发现什么都没有,那么这是一套确定的独特要求,你有时间去创新。

    拿着你拥有的,想出一些想法,然后尝试一下,随工作而来!

        2
  •  2
  •   Jonathan Holloway    15 年前

    我没有找到比iCal4J更好的替代品,我用得相当成功。不幸的是,正如您指出的,它所做的只是绑定到XML,而没有其他方法将其输出到其他对象。您可以在创建后遍历DOM并输出相关的文本——尽管这看起来有点奇怪,因为您所需要的只是文本/HTML,但我遇到了同样的问题,并最终解析了XML。

    ical4j api有点奇怪,您可能希望放松解析并启用Outlook/Notes兼容性以帮助您完成这一过程。您可以编写自己的解析器并实现 net.fortuna.ical4j.data.CalendarParser 然后以这种方式将必要的信息提取为纯文本。我认为违约 net.fortuna.ical4j.data.CalendarParserImpl 大约有500行代码,你也可以破解它。

        3
  •  1
  •   David Bal    8 年前

    我制作了一个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