sax 파서를 사용하여 입력 스트림에서 xml을 구문 분석하려고합니다. inputstream은 들어오는 xml을 소켓에서 연속적으로 가져옵니다. '\ n'은 xml 데이터 사이의 구분자로 사용됩니다. 이것은 XML 우리가 \ n을 개까지 문자를 가져다가 그 문자열에 저장하고, DOM 파서를 사용 이것은 우리의 아이폰 프로젝트를 위해 완벽하게 작동입력 스트림에서 n 문자를 필터링합니다.
<?xml version="1.0" encoding="UTF-8"?>
<response processor="header" callback="comheader">
<properties>
<timezone>Asia%2FBeirut</timezone>
<rawoffset>7200000</rawoffset>
<to_date>1319256000000</to_date>
<dstrawoffset>10800000</dstrawoffset>
</properties>
</response>
\n
<event type="progress" time="1317788744214">
<param key="callback">todayactions</param>
<param key="percent">10</param>
<param key="msg">MAPPING</param>
</event>
<event type="progress" time="1317788744216">
<param key="callback">todayactions</param>
<param key="percent">20</param><param key="msg">MAPPING</param>
</event>
\n
<?xml version="1.0" encoding="UTF-8"?>
<response processor="header" callback="comheader">
<properties>
<timezone>Asia%2FBeirut</timezone>
<rawoffset>7200000</rawoffset>
<to_date>1319256000000</to_date>
<dstrawoffset>10800000</dstrawoffset>
</properties>
</response>
과 같을 것이다 방법이다.
하지만 안드로이드에 대해이 작업을 시도하면 문자열은 옵션이 아니며 OutOfMemory 예외가 발생했습니다. 그래서 우리는 그것이 우리에게 예외를 제공합니다 그 후, \ n을 문자 때까지 작동하는 SAXParser를 직접의 InputStream을 설정
org.apache.harmony.xml.ExpatParser $ ParseException가 : 2 호선, 열 0에서 : 문서 요소 후 정크
는 그래서 '\ n을'문자를 건너 뜁니다의 InputStream를 필터링하는 데 노력했다. FilterStreamReader를 만들었지 만 성공하지 못했습니다. 내 읽기 기능이 제대로 작동하지 않는 것 같습니다. 여기 내 코드가있다.
public class FilterStreamReader extends InputStreamReader {
public FilterStreamReader(InputStream in, String enc)
throws UnsupportedEncodingException {
super(in, enc);
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
int read = super.read(cbuf, off, len);
Log.e("Reader",Character.toString((char)read));
if (read == -1) {
return -1;
}
int pos = off - 1;
for (int readPos = off; readPos < off + read; readPos++) {
if (read == '\n') {
pos++;
} else {
continue;
}
if (pos < readPos) {
cbuf[pos] = cbuf[readPos];
}
}
return pos - off + 1;
}
은 누군가가 나이되는 InputStream의 \ n을 필터링 도와 드릴까요? 그레이엄은 내가 모든 문서 유형을 제거하고 내 자신의 시작과 끝 태그를 추가하여 전체 데이터를 구문 분석 할 수 있었다 말씀을 바탕으로
편집 . 그래서 내 문제가 '\ n'만 필터링하지 않는다고 확신하지 못한다. 어떻게 이런 식으로 계속 XML을 파싱 할 수 있습니까?
준비된 원본 파일이있는 기본 OS에 따라 \ r 기호가 있는지 확인하십시오. 단일 \ r 대신에 \ r \ n (Linux의 경우) – barmaley