이것은 나를 미치게합니다. 나는 많은 다른 프로젝트를 위해이 코드를 사용했다. 그러나 이것이 나에게 이런 유형의 에러를주는 것은 처음이다.SAXException : 내용이 뒷부분에 허용되지 않습니다.
public static Xml parse(String xmlString)
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = null;
//System.out.print(xmlString);
try
{
doc = dbf.newDocumentBuilder().parse(
new InputSource(new StringReader(xmlString)));
// Get root element...
Node rootNode = (Element) doc.getDocumentElement();
return getXmlFromNode(rootNode);
} catch (ParserConfigurationException e)
{
System.out.println("ParserConfigurationException in Xml.parse");
e.printStackTrace();
} catch (SAXException e)
{
System.out.println("SAXException in Xml.parse ");
e.printStackTrace();
} catch (IOException e)
{
System.out.println("IOException in Xml.parse");
e.printStackTrace();
}
return null;
}
나는 문맥 : 여기
<layers>
<layer name="Layer 1" h="400" w="272" z="0" y="98" x="268"/>
<layer name="Layer 0" h="355" w="600" z="0" y="287" x="631"/>
</layers>
그것으로 공급되는 XML을 구문 분석의 DocumentBuilderFactory를 사용하여 내 사제 XML 클래스의 코드 수술 비트가이 전체 XML 파일입니다 이것을 사용하면 : 포토샵 형식의 이미지 조작 응용 프로그램을 제작하는 학교 프로젝트입니다. 파일은 레이어와 함께 .png 파일로 저장되며이 xml 파일은 .zip 파일의 레이어 위치 등에 저장됩니다. 지퍼로 인해 신비스러운 추가 문자가 추가되는지 여부는 알 수 없습니다.
의견을 보내 주셔서 감사합니다.
게시 한 내용이 실제로 XML 파일의 내용인지 100 % 확신합니까? 당신의 디버거는'xmlString' 변수의 내용에 대해 무엇을 말합니까? 아마도 루트 요소가 여러 개입니까? 또한'xmlString'의 내용을 생성하는 코드를 게시 할 수도 있습니다. – predi
이 질문과 대답에 감사드립니다. 나는 GenericJam에 동의한다 - 이것은 버퍼와 관련이있다. 기본적으로 모든 바이트는 0이고 'zipFile.getInputStream (xmlZipFile) .read (buffer)'에 대한 호출은이 바이트의 첫 번째 'n'을 덮어 씁니다. 그러나 후행 0 바이트는 XML 문서에서 '내용'으로 간주됩니다. – welterw8