2009-09-04 4 views
3

이것은 이전 질문 (후속 조치 here)에 대한 후속 조치입니다. 지금까지의 속성 파일은 int 및 String과 같은 간단한 키 - 값 쌍으로 구성됩니다. 지금은 더 구체적으로 내가지도를 필요로, 거기에 좀 더 진보 된 구조를 배치하는 데 사용하고 싶습니다 < A는과 같이 예를 들어, 내가 정의한 클래스 A, 정수> :속성 파일의 구문 분석 맵

foo=bar,5;baz,10 

이인가 가능한? 그렇다면 어떻게 파일을 포맷하고지도를 파싱해야합니까?

이 문제를 해결하는 더 좋은 방법이 있습니까?

답변

3

split() 및 trim()을 사용 해본 적이 있습니까?

아래를 참조하십시오 :

의 ResourceBundle RB = ResourceBundle.getBundle는 (Prop.class.getName());

String fooValue = rb.getString("foo"); 
    String[] firstSplit = fooValue.split(";"); 
    for(String first : firstSplit){ 
     String firstTrim = first.trim(); 

     String[] intAndString = firstTrim.split(","); 
     if(intAndString.length == 2){ 
      String intString = intAndString[0].trim(); 
      String stringVal = intAndString[1].trim(); 

      //TODO add entries here or return value. 

     } 
    } 
+0

문자열에 쉼표 또는 세미콜론이 필요한 경우 어떻게해야합니까? – Tom

+0

확실히 이것이 문제가되지 않을 것이라고 확신합니다. 또한 다른 캐릭터와 항상 교환 할 수 있습니다. –

1

그것은 당신이 일을하려고하고 장기 계획하지만 난 이런 종류의 일이 아주 쉽게 스프링 프레임 워크에 의해 처리되는 것으로 나타났습니다하는지에 대한 과잉 수 있습니다.

여기에 표시되는 방법은 handle collections including maps입니다.

여기 여기에 또 다른 general article on Spring

의지도가

<beans> 
    <bean id="foo" class="x.y.Foo"> 
     <property name="accounts"> 
      <map> 
       <entry key="one" value="9.99"/> 
       <entry key="two" value="2.75"/> 
       <entry key="six" value="3.99"/> 
      </map> 
     </property> 
    </bean> 
</beans> 
1

를 사용하여 XML없는 특성이 더 복잡한 구조를 표현하기 위해 자신의 언어 파일 Spring 설정 파일에서의 모습, 그것은 더 적은 일 수 있습니다 , 덜 버기, 유지하기 쉽습니다.

JIBX 및 XML Beans와 같은 바인딩 기술을 사용하면 작업을 쉽게 할 수 있습니다.

1

이 예제에서 가장 쉬운 방법은 별도의 속성 파일을 만드는 것입니다. 그럼 그냥

바 = 5 바즈처럼, 이름/값 쌍을 가지고 = 10

이 큰 테이블 인 경우, 좀 더 일반적인 물건을 섞어 싶지 않을 것이다. 3 쌍짜리 테이블이라면 다른 것입니다.

속성 파일은 실제로 복잡한 데이터 구조를위한 최상의 솔루션입니다. 이름/값 쌍을 의미합니다. 그 이상으로 확실하게 구문을 만들어 냄으로써 효과를 낼 수는 있지만 왜 귀찮은가? 슈퍼 복잡한 구문이라면 XML이 가능합니다. 또는 관계형 데이터베이스에 속해있을 수도 있습니다. 또는 CSV 파일. 요구 사항에 맞는 도구를 선택하고 도구를 먼저 결정한 다음 적합하게 만듭니다.

+0

실제로 Koekiebox의 솔루션과 함께 별도의 속성 파일을 조합하여 사용했습니다. 읽기 문자열을 사용하여 구문 분석하고 클래스를 매핑하여 클래스의 인스턴스를 만듭니다. 지금까지 잘 작동 했으므로이 솔루션에 상당히 만족합니다. –