2012-10-02 3 views
2

저는 봄용 MVC 프로젝트를 XML 파일에 업로드하고 DOM을 사용하여 내 XML에 쓰려고 시도하지만 예외는 없습니다. 평소 프로젝트에서 동일한 작업을 수행하려고 할 때 - 모두 정상적으로 작동합니다. 그런 일이 왜 .. 코드의DOM 파일을 XML 파일에 쓸 수 없습니다.

type Exception report 

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 


root cause 

java.lang.NullPointerException 
    org.apache.xml.utils.TreeWalker.dispatachChars(TreeWalker.java:303) 
    org.apache.xml.utils.TreeWalker.startNode(TreeWalker.java:447) 
    org.apache.xml.utils.TreeWalker.traverse(TreeWalker.java:202) 
    org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:343) 
    com.mycompany.xmlloader.xmlHandler.DOMParser.saveToCatalog(DOMParser.java:147) 
    com.mycompany.xmlloader.service.XMLServiceImpl.updateCatalog(XMLServiceImpl.java:48) 
    com.mycompany.xmlloader.controller.XMLController.uploadToCatalog(XMLController.java:47) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:601) 
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

그리고 조각을 이해 할 수 없습니다

TransformerFactory transfac = TransformerFactory.newInstance(); 
     Transformer trans = transfac.newTransformer(); 
     trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
     trans.setOutputProperty(OutputKeys.INDENT, "yes"); 

     StreamResult result = new StreamResult(catalogFile.toURI().getPath()); 
     Source source = new DOMSource(doc); 
     trans.transform(source, result); 

답변

4

문제의 원인은 데이터가 null로 설정하였습니다 DocumentText 노드입니다. (문제의 토론 herehere를 참조하십시오.)이 진단은 다음과 같은 코드를 사용하여 올바른 경우

당신은 확인하기 위해 Document을 확인할 수 있습니다 : 당신의 Document

public static void checkDoc(Node n) { 
    if (n instanceof Text) { 
    if (((Text) n).getData() == null) { 
     System.err.println("null data!!!!"); 
    } 
    } 

    NodeList l = n.getChildNodes(); 
    for (int i = 0; i < l.getLength(); ++i) { 
    checkDoc(l.item(i)); 
    } 
} 

전화 checkDoc을 :

checkDoc(doc); 

출력이 표시되면 NPE의 직접적인 원인을 알 수 있습니다. 문제의 해결책은 다음과 같습니다. Text 노드에 null 데이터가 포함 된 Document을 빌드하지 마십시오.

+0

많은 감사. 나를 위해 일했다. –

관련 문제