[英]Java Parsing nested conf file
我有一個配置文件:
company=My Company
num_users=3
user={
name="John"
age=24
}
user={
name="Anna"
age=27
}
user={
name="Jack"
age=22
}
我正在嘗試使用Java解析此配置文件。 我嘗試了java.util.Properties,但是我不知道如何獲取每個用戶數據。
我仍然可以使用getProperty方法獲取公司財產的價值。
請幫我解決一下這個。
謝謝!
具有相同屬性名稱但值不同但getProperty(String key)
它們,因為它將返回第一個值。
其次,您不能直接訪問嵌套屬性。現在,這里的getProperty
將返回包含{}
作為值的整個String
,因為這就是您的值所包含的內容。您可能會獲取值並執行一些操作以從整個String
獲取值。因為屬性文件應該具有僅key=value
格式意味着左側應為key,右側應為key=value
。就是這樣。
如果要存儲代碼中指定的值,則應使用JSON
格式,這樣可以將整個JSON
數據存儲到文件中,並在使用時從文件中取回。
如果使用java.util.Properties類加載配置文件,則會得到以下結果:
{company=My Company, age=22, user={, name="Jack", }=, num_users=3}
原因是,您可以參考javaDoc中的Properties類的“ public void load(Reader reader)”方法。
由於您沒有為配置文件描述詳細的語法格式,因此基於示例輸入,以下示例代碼可以正確檢索name = value:
String reg="(\\w+)\\s*=\\s*((?>\\{[^\\{\\}]*\\})|(?>.*$))";
Pattern pMod = Pattern.compile(reg, Pattern.MULTILINE);
Matcher mMod = pMod.matcher(line);
while (mMod.find()) {
System.out.println(mMod.group(1));
System.out.println(mMod.group(2));
}
輸出為:
company
My Company
num_users
3
user
{
name="John"
age=24
}
user
{
name="Anna"
age=27
}
user
{
name="Jack"
age=22
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.