2011-09-20 6 views
3

Java에서 .plist 파일을 구문 분석하려고하지만 어떻게 이해하지 못했습니다. DOM 파서를 사용했지만 오류가 발생하여 .plist 파일을 읽을 수 없습니다.Java에서 .plist 파일을 구문 분석하는 방법은 무엇입니까?

xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"                 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>All Samples</key> 
<array> 
    <dict> 
     <key>Message</key> 
     <string>1) UIATarget </string> 
     <key>Timestamp</key> 
     <date>2011-07-06T19:40:09Z</date> 
     <key>Type</key> 
     <integer>0</integer> 
    </dict> 

이 내 main 기능 : 내가 당신이라면

public static void main(String[] args) throws XMLStreamException, IOException { 
    InputStream in = new FileInputStream("File.plist"); 
    XMLInputFactory factory = XMLInputFactory.newInstance(); 
    XMLEventReader parser = factory.createXMLEventReader(in); 

    assert parser.nextEvent().isStartDocument(); 

    XMLEvent event = parser.nextTag(); 
    //System.out.println(event.getClass()); 
    assert event.isStartElement(); 
    final String name1 = event.asStartElement().getName().getLocalPart(); 

    if (name1.equals("dict")) { 
     while ((event = parser.nextTag()).isStartElement()) { 
      final String name2 = event.asStartElement().getName().getLocalPart(); 

      if (name2.equals("key")) { 
       String key = parser.getElementText(); 
       System.out.println("key: " + key); 

      } else if (name2.equals("String")) { 
       String number = parser.getElementText(); 
       System.out.println("date: " + number); 

      } else if (name2.equals("date")) { 
       String str = parser.getElementText(); 
       System.out.println("date: " + str); 
      } 
     } 
    } 

    assert parser.nextEvent().isEndDocument(); 
} 
+0

전체 파일을 가지고 계십니까? 닫는 태그가없는 것 같습니다. '',''와'': DICT 파일이 다음 태그 실제로, 3 개 닫는 태그가 누락 –

+0

닫는 태그는 동일합니다. :) - 또한 시작 ' jatin

+0

@ 마크와 함께 종료 후 – Thomas

답변

6

내가 code.google.com/xmlwise에서 PList 클래스를 사용하는 것

이 내 PLIST 파일입니다. 특히 .plist 파일을 다루기 위해 설계되었습니다.

+0

thanx 4 대답, 나는 이것을 사용해 본적이 없다. 사용하려고 시도했다. – jatin

1

여러분은 pList 파서를 제공하는 http://commons.apache.org/proper/commons-configuration/에있는 Apache Commons Configuration을 보길 원할 것입니다. 다음은 스 니펫 예제입니다.

 XMLPropertyListConfiguration plist = new XMLPropertyListConfiguration(); 
     // load plist from classoath 
     URL url = this.getClass().getClassLoader().getResource(systemConfigFile); 
     plist.setFileName(url.getFile()); 
     plist.load(); 
     Iterator<String> keys = plist.getKeys(); 
     while (keys.hasNext()) { 
      // do someting with the value 
      plist.getString(keys.next()); 
     } 
+0

XMLPropertyListConfiguration에는 수년 동안 버그 표가 보류되어있다. https://issues.apache.org/jira/browse/CONFIGURATION-427 나쁜 선택이다 plist 발생을 위해. 그것은 잘 plist 파일을 구문 분석하는 잘 작동합니다. 나는 결국 템플릿 시스템 (Velocity)을 사용하여 plist 파일을 생성하기로 결정했습니다. – filamoon

+0

예, 사실 - 저는 어쨌든 다른 것을 읽지 않고 사용한 적이 있습니다. 요즘 나는 어쨌든 YAML을 선호한다. –

관련 문제