파일 내에 포함 된 UTF-16LE XML 문자열을 구문 분석하려고합니다. 실제 문자열을 String 객체로 읽어 들일 수 있으며 watch 윈도우에서 XML을 볼 수있어 잘 보입니다. 문제는 내가 그것을 분석하려고 할 때 예외가 던져지기 때문이다. getBytes 줄 및 InputStreamReader 생성자에서 UTF-16 및 UTF-16LE을 지정하려고했지만 여전히 예외가 throw됩니다.Java UTF-16LE 문자열에서 XML 구문 분석
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
builder = builderFactory.newDocumentBuilder();
Document document = null;
byte[] bytes = xmlString.getBytes();
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
InputSource is = new InputSource(new InputStreamReader(inputStream));
document = builder.parse(is); // throws SAXParseException
편집 : 이것은 Android를 사용하고 있습니다. 또한 다음은 스택 추적의 맨 위에있는 예외입니다.
12-18 13 : 51 : 12.978 : W/System.err (5784) : org.xml.sax.SAXParseException : name expected (position : [email protected]의 START_TAG @ 1 : 2) 12-18 13 : 51 : 12.978 : W/System.err (5784) : org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse (DocumentBuilderImpl.parse) .java : 146) 12-18 13 : 51 : 12.978 : W/System.err (5784) : javax.xml.parsers.DocumentBuilder.parse (DocumentBuilder.java:107)
wrmHeaderXml이란 무엇입니까? 문자열, 객체 또는 와트? 바이트에서 문자로, 그리고 문자에서 바이트로 다시 변환하는 것 같습니다. 왜? 이미 바이트가 있다면 그냥 InputSource (InputStream)에 입력하십시오. – leonbloy
문자열 일 것입니다. Java String이기 때문에 내부 인코딩이 중요하지 않은 것보다 String 객체가 있고 콘솔에서 볼 수 있다고 말하면 – Raffaele