2013-03-28 146 views
0

我有一個結構類似於一棵大樹像這樣一個大的文本文件:從樹中提取的信息結構化文本文件

{ SomeType 
    - parameter1 = value; 
    - parameter2 = { SomeType2 
     -paramter 1 = { SomeType3 
       ... 
     } 
    - parameter3 = { SomeType4 
     ... 
     - name = "name"; 
     ... 
     } 
    - name = "name"; 
    - more paramters; 
}{ SomeType 
    - parameter1 = value; 
    - parameter2 = { SomeType2 
     -paramter 1 = { SomeType3 
       ... 
     } 
    - parameter3 = { SomeType4 
     ... 
     - name = "name"; 
     ... 
     } 
    - name = "name"; 
    - more paramters; 
} 

文件有超過10000行和現在我需要找到的所有名稱與某種類型相關聯。

我遇到的問題是,對於某種類型的名稱行通常是類型後的第一行,但在其他地方,它是在其他具有自己的名稱的其他子類等之後。 因此,我不能只是逐行搜索類型,然後獲取包含「名稱」的下一行。同樣的類型可以在更深的層次上找到。

我似乎無法找到一種可行的算法,我可以用java實現。

回答

0

如果在您的情況下可行,我建議您將數據表示更改爲XML或JSON等已知表示模型,並使用解析器機制來處理具體的數據表示格式。幸運的是,XML和JSON都有很多穩定和有效的解析器。

+0

該文件是來自Rational Rhapsody的.sbs文件,它存儲所有模型數據,因此無法更改。 – dawastl

+0

@dawastl,也許有這種文件的解析器的Java實現? – Egor

+0

已經嘗試搜索一個,但沒有運氣。由於Rhapsody提供了一個JAVA API,大多數用於他們的目的。我可以通過API獲取我想要的信息,但是我想嘗試通過文本文件獲取相同的信息,因此我不需要Rhapsody,並且可以在批處理模式下輕鬆地爲項目的整個目錄運行它。 – dawastl