對於我們產品的Web服務接口,我們正在定義類似查詢字符串的sql。他們不遵循確切的SQL語法。它是這樣工作的。這些字符串存在於xml請求中。我的應用程序解析字符串並根據內容創建Java對象。這些java對象用於查詢數據庫。下面是查詢字符串的幾個例子:解析「SQL like」查詢字符串
objectType==device && deviceType==mobile && returnType==full
objectType==device && deviceType==computer && deviceState==connected && returnType==basic
objectType==networkEntity && namePattern==*.nw && networkEntityType==SGSN
的鍵(的objectType例如)以及值(設備/ networkEntity)通常列舉。因此,解析機制的期望是:
- 如果查詢字符串中存在任何未知元素(鍵/值),則應該失敗。
- 元素(鍵/值)應出現在定義的順序(這僅僅是爲了簡化解析邏輯)
- 今後,除了「==」和「& &」,其它操作也可以得到介紹。
- 可以有鍵/值的不同組合導致大量的唯一查詢字符串。
現在我正在使用String.split和Scanner的組合來解析字符串。但是,我發現代碼變得越來越複雜,越來越難以調試。到目前爲止,我還沒有引入任何重要的驗證。因此,我期待代碼變得更加複雜和「醜陋」。
[問]是否有任何庫可以幫助我解析這樣的字符串。任何其他建議/想法也將不勝感激。
我給JParsec一個嘗試。將繼續發佈。 – 2012-08-14 05:36:10
@ArnabBiswas這也是我的選擇。 – 2012-08-14 05:47:06