[英]What is the best way to parse a non-flat file format in Java?
我試圖用Java解析嵌套文件格式。
文件格式如下所示:
head [
A [
property value
property2 value
property3 [
... down the rabbit hole ...
]
]
... more As ...
B [
.. just the same as A
]
... more Bs ...
]
將此解析為我的程序的最佳/最簡單的技術是什么?
有限狀態機?
手動逐字閱讀並跟蹤我所處的結構的哪個部分?
寫一個語法......?
作為旁注,我無法控制格式 - 因為我知道有人會說出來!
我是第二個看看Antlr的建議。 StAX增加了類似SAX的事件處理。
http://www.antlr.org/wiki/display/ANTLR3/Interfacing+StAX+to+ANTLR
是的,有一個學習曲線,但是當你處理所有奇怪的情況並調試你的代碼時,你可能會收支平衡 - 你的簡歷上有一個新項目。
可以說,解析這些類文件的最簡單方法是使用遞歸下降解析器( http://en.m.wikipedia.org/wiki/Recursive_descent_parser )。 我想這就是你手動閱讀和跟蹤你找到的結構的意思。
如果您必須能夠處理無限制的嵌套,那么有限狀態機將無法工作。 如果只有兩個級別就足夠了。
編寫語法並生成解析器也可以,但如果您之前沒有這樣做或者沒有時間學習如何使用這些工具,那么它可能有點過分......
最快的方法是使用這樣的格式,例如JSon或YAML。 這些格式執行此操作並受支持。
作為旁注,我無法控制格式
如果你想知道解析像Yaml這樣的東西的最好方法,那就是閱讀一個簡單的Yaml解析器的代碼。
只是解析文件不太可能,您還需要觸發事件或從您加載的數據生成數據模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.