2013-08-09 5 views
1

내 코드에 약간 문제가 있습니다. XML 파일을로드하여 파일에서 데이터를 추출하고 싶습니다. 예 : 다른 객체와 속성 내 생각은 Filechooser를 통해 파일을 선택하고 JDOM을 사용하여 XMLparser로 정보를 가져온 다음 오브젝트를 어딘가에 저장합니다. 데이터베이스. 이제 선택한 파일을 읽는 데 문제가 있습니다.DocumentBuilderFactory 및 Filechooser 문제

[Fatal Error] :1:1: Content ist nicht zulässig in Prolog. 
org.xml.sax.SAXParseException; systemId: file:/C:/x/; lineNumber: 1; 
columnNumber: 1; Content ist nicht zulässig in Prolog. 
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) 
at XMLParser.xmlparser.main(xmlparser.java:36) 
at startmenu.Startmenu$2.mouseClicked(Startmenu.java:78) 

라인 36 라인 78에 오류가 있습니다 :이 오류 메시지가 나타납니다 컴파일 후

공용 클래스 XmlParser가 {

public static void main (String args[]) throws Exception 
{  
    JFileChooser chooser = new JFileChooser(); 
    File f = new File("C:/x"); 
    chooser.setCurrentDirectory(f); 
    chooser.setFileFilter(new OnlyXML()); 
    chooser.showOpenDialog(null); 
    String path = f.getPath().toString(); 


    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); 

    try { 
     DocumentBuilder docBuilder = builderFactory.newDocumentBuilder(); 
     Document document = docBuilder.parse(new File(path)); 
     document.normalize(); 
     System.out.println(document.getFirstChild().getTextContent()); 
    } 
    catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
} 

: 내 코드는 더 나은 이해를 위해, 그 모양 36 번 라인 : 선택한 파일이있는 것이 틀림 없습니다. 그러나 무엇을 모르겠습니다. 78 번 줄 : 버튼을 클릭하고 왜 그것이 실수인지 이해하지 못한다면 xmlparser-class를 startmenu-class 밖으로 호출합니까? 여기

그것의 코드 부분 :

xmlparser x = new xmlparser(); 
x.main(null); 

그냥 일반 전화. 나는 누군가가 도움이 될 수 있습니다 희망 대단히 감사합니다 :)

+0

XML 파일이 아닌'C :/x /'를 구문 분석하려고하는 것처럼 오류가 발생합니다. 그리고'JFileChooser'에 의해 파일을 어디서 선택합니까? –

+0

나는 사용자가 선택한 파일을 얻고 그 파일을 분석하려고 시도 할 때'File choosenFile = chooser.getSelectedFile()'을 사용해야한다고 생각한다. –

답변

2

내가 당신의 문제는 사용자가 선택한 File을 사용하지만, JFileChooser의 루트 폴더에 해당하는 가변적이고 f하지 않을 것이라고 생각합니다. 당신은 아마 코드에서 그런 일을 수행해야합니다

File choosenFile = chooser.getSelectedFile(); 

이는 JFileChooser의 선택된 파일을 얻을 것이다. 이 클래스와 함께 작업한지 얼마되지 않았으므로 아마도 약간의 문서 here을 읽을 필요가 있습니다. 이 해결한다면 나도 몰라

Document document = docBuilder.parse(choosenFile); 

:

선택한 파일이 후에는 파일을 구문 분석, 대신 새로운 File을 만들 수 있습니다, 당신은 파일 변수를 다시 사용할 수 있습니다 문제가 있다면, 더 이상 도움이 필요하면 말씀해주십시오.

+0

Marc에게 감사드립니다. 내가 선택한 파일과 뭔가 있어야한다는 것을 알았지 만, getSelectedFile() 메소드를 얻지 못했습니다. 고마워. – Alika87

+0

@ Alika87 문제가 없습니다! 내가 도울 수있어서 기뻐! –