对于我们产品的Web服务接口,我们定义了sql之类的查询字符串.它们不遵循确切的sql语法.它的工作原理如下.字符串存在于xml请求中.我的应用程序是解析字符串并根据内容创建Java对象.这些java对象用于查询DB.以下是查询字符串的几个示例:
objectType==device && deviceType==mobile && returnType==full
objectType==device && deviceType==computer && deviceState==connected && returnType==basic
objectType==networkEntity && namePattern==*.nw && networkEntityType==SGSN
Run Code Online (Sandbox Code Playgroud)
通常枚举键(例如objectType)和值(device/networkEntity).所以解析机制的期望是:
现在我使用String.split和Scanner的组合来解析String.但是,我发现代码变得越来越复杂,越来越难以调试.到目前为止,我还没有提出任何重要的验证.有了这个,我期待代码变得更加复杂和"丑陋".
[问题]是否有任何库可以帮助我解析这些字符串.任何其他建议/想法也将不胜感激.
有几个Java库用于将输入数据解析为对象树.值得注意的是:
这取决于您的偏好和背景使用哪一个.JParsec仅以本机Java语言构造解析器(无外部语法文件等),另外两个从语法描述文件生成解析器.
使用这样的解析器库起初可能看起来有点吓人,但它并不困难,它将为您节省很多调试和维护自己的解析器的麻烦.如果您以后需要改进语言(添加新的运算符,运算符优先级,括号等),那将非常容易.
另请参阅Java的Yacc等效项
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |