2013-09-16 1 views
1

서버에서 오류가 발생하여 XML을 반환하지 않았지만 오류 메시지가 표시되는 이유는 무엇입니까? 유효한 XML인지 확인하는 방법이 있나요, 그래서이 메시지가 표시되지 않습니다.발생 원인 : org.w3c.dom.DOMException : 하나의 루트 요소 만 허용

나는이 방법으로 XML을 전달합니다

public Document getDomElement(String xml){ 
     Document doc = null; 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     try { 

      DocumentBuilder db = dbf.newDocumentBuilder(); 

      InputSource is = new InputSource(); 
       is.setCharacterStream(new StringReader(xml)); 
       doc = db.parse(is); 

      } catch (ParserConfigurationException e) { 
       Log.e("Error: ", e.getMessage()); 
       return null; 
      } catch (SAXException e) { 
       Log.e("Error: ", e.getMessage()); 
       return null; 
      } catch (IOException e) { 
       Log.e("Error: ", e.getMessage()); 
       return null; 
      } 
       // return DOM 
      return doc; 
    } 

감사

답변

1

오류, 당신의 XML (예)처럼 매우 간단 보인다 :

<root-element> 
    ... 
</root-element> 
<root-element> 
    ... 
</root-element> 
... 
<root-element> 
    ... 
</root-element> 

는 XML 하나만을 허용하면서 루트 요소이므로 파서가 작동하도록 모든 "기본"요소에 대한 "래퍼"요소를 만들어야합니다.

+0

안녕하세요, 오류가 발생한 이유는 일반적으로 XML이 전달되고 정상적으로 작동하기 때문입니다. 하지만 이제 XML 형식이없는 몇 줄의 오류 메시지 만 표시됩니다. 응답을 변경할 수 없어이 메서드에 유효한 XML 문자열을 전달하는지 확인하거나이 오류를 잡을 수있는 방법이 있습니까? – Diego

+0

마지막 문장을 말했을 때, 물론 나는 단지 DomException을 잡아야한다고 생각했습니다. – Diego

+1

@Diego 맞습니다. 예외 상황을 파악하고 해당 시나리오에서 null 문서를 반환 할 수 있습니다. – alfasin

관련 문제