dataurl := "data:" [ mediatype ] [ ";base64" ] "," data
mediatype := [ type "/" subtype ] *( ";" parameter )
data := *urlchar
parameter := attribute "=" value
value := token / quoted-string
根据来自RFC的这些BNF,将数据与mime类型分开的逗号实际上可以同时出现在mime类型和数据中,因此没有简单的方法(即reg ex)将URI分解为部分。因此需要一个完整的解析器。
我想知道是否有人知道Java中的任何数据URI库?我的Google搜索没有产生任何结果。
答案 0 :(得分:4)
GitHub上有一个名为jDataUri的Java数据URI解析器实现。
免责声明:我是作者
答案 1 :(得分:0)
我最终不得不实现自己的解析器。 RFC提供了BNF,因此可以实现完整的词法分析器和语法分析器。但是,对于这个简单的情况,我使用了一个简单的扫描+堆栈机制来跟踪引用的字符串并找到分隔逗号。 javax.activation的MimeType用于实际的Mime解析。