- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个为 iPhone (Objective-C) 编写的移动应用程序,允许用户使用特定格式导入数据。我用 Java 为 Android 编写了相同的应用程序,并且用户开始要求导入的能力。数据的格式是一种可移植的标准,编写此类应用程序的人必须能够导入和导出。
虽然我确实用 Objective-C 写了我要问的内容,但我有一种感觉,如果我用不同的方式来做,我可以让我的生活变得更轻松一些。所以我想问一下你在Java中如何解析下面的TLV。我不需要代码,只需要要点。
这是 TLV 格式:
<Type:Length>Value<Type:Length>Value<Type:Length>Value<end>
每条记录均以 <
开头并以 <end>
结尾。记录中的\n 是可以接受的,零长度值也可以。
这是描述四种不同汽车的示例输入,请注意多行记录和零长度值。
<make:4>ford<model:7>contour<color:3>red<end>
<make:5>mazda<model:3>mpv<color:5>black<end>
<make:3>bmw
<model:3>335
<color:6>yellow
<end>
<make:7>unknown<model:0><color:4>grey<end>
解析数据后,我会将其插入到 SQLite 数据库中,因此最终按每条记录循环数据将产生一堆字符串,我可以将它们用作 INSERT 语句的一部分。
感谢您提供的任何想法!
尼克
最佳答案
非常奇怪的格式。有发布的规范吗?
您可以尝试进行字符串标记化路线。您可以利用内置的 Java 正则表达式来帮助匹配,甚至只使用基本的 String类方法(分割和修剪是你的 friend )。基本上只是这样做:
String[] lines = input.split("<end>");
for(String line : lines)
{
line = line.trim();
String[] sublines = line.split("<");
for(String subline : sublines)
{
subline = subline.trim();
...additional breaking, trimming, branching...
}
}
类型长度是一个有趣的验证组件,但对于现代语言来说有点奇怪。我要问的一个大问题是期望什么编码。 UTF-8? 7 位 ASCII?奇怪的东西?
我的 friend 会把上面的伪代码称为 hack,并告诉我做类似 JavaCC 的事情。 ,但我有一些 Nerd 和不切实际的 friend 。 ;)
关于java - 你会如何用 Java 解析这个 TLV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632891/
我是一名优秀的程序员,十分优秀!