2009-08-29 6 views
21

XML 파일에 개체를 마샬링하는 API를 인터넷에서 사용하고 있습니다. XSD 파일을 사용할 수 있다고 가정하면 파일을 다운로드 한 후에 Java 객체로 다시 언 마샬 할 수 있기를 원합니다.XML 파일을 Android에서 Java 객체로 비 정렬 화 하시겠습니까?

주위를 둘러 본 후에는 JAXB이 Java에서이 작업을 수행하는 기본 라이브러리이지만 모바일 앱을 개발할 때 추가 8.6MB 종속성 만 허용되지 않습니다. 나는 또한 XStream을 찾았지만 여전히 무게는 7.9MB입니다.

안드로이드 SDK를 파고들 수있는 유일한 실제 XML 파서는 SAX입니다. SAX 내가 원하는 것을 얻을 수있는 방법이

  1. 있습니까 :

    그래서 여기에 질문입니까?

  2. 내가 놓친 Android SDK에 다른 도구가 있습니까?
  3. 이 작업을 수행 할 다른 라이브러리가 있습니까?

감사합니다.

답변

2

Java와 XML간에 개체를 변환하는 데는 많은 도구가 있지만 익숙한 도구는 사용자가 찾은 것보다 작습니다. 그러나 객체 그래프의 복잡성에 따라 SAX가 필요할 수도 있고 오버 헤드가 거의 없습니다. 그 트릭은 SAX 이벤트 핸들러 내부에서 객체 그래프를 직접 빌드하는 것입니다. 필자는 XML 마샬 러가 널리 보급되기 전에이 기술을 몇 가지 프로젝트에서 사용했지만 더 많은 작업이 필요하지만 효과적입니다.

+0

예 ... 제가 대안을 찾기 시작한 주요 이유는 "객체 그래프"가 실제로 매우 복잡하다는 것입니다. 계속 지켜 볼께 ... 고마워. –

0

Android SDK에서 SAX 외에 DOM 파서 및 XMLPullParser도 사용할 수 있습니다.

메모리 내 데이터 구조를 완전히 구축하고 싶지 않다면, 속도와 메모리 공간이 지불하고자하는 가격이면 DOM이 고통을 덜어 줄 수 있습니다.

19

JAXB와 비슷한 방식으로 주석을 사용하여 Java에서 XML로 바인딩하는 Android에서 작동하는 프레임 워크가 있습니다. Simple이라고하며 무게는 270K 미만입니다. 이는 XStream 또는 JAXB. 또한 외부 종속성이 없으며 하나의 JAR 만 있으면 모든 것이 작동합니다. 다음은 Simple 및 XML 용 Java 직렬화 프레임 워크에 대한 링크입니다.

http://simple.sourceforge.net

이것은 또한 객체 그래프상의 사이클을 처리 할 수있다.

+4

이 라이브러리는 멋지게 보이지만 내 안드로이드 앱으로 테스트 해 보겠습니다. 그러나 XSD에서이 형식으로 자바 클래스를 빌드하는 도구가 있습니까? – yeradis

+1

이 댓글에 다음을 추가 할 수 있습니다. http://www.javacodegeeks.com/2011/02/android-xml-binding-simple-tutorial.html –

+5

그리고 방금 간단한 블로그를 포함하여 포괄적 인 블로그 게시물을 작성했습니다. 여기 안드로이드 프로젝트 : http://robertmassaioli.wordpress.com/2011/04/21/simple-xml-in-android-1-5-and-up/ –

5

XStream은 431k입니다. 당신은 안드로이드 응용 프로그램에서 전체 배포 우편 번호가 필요하지 않습니다. 더 빠른 성능을 위해 xpp3 풀 파서를 추가하면 24k가 추가됩니다. 전체 패키지를 455k로 가져갈 수 있습니다. 여전히 이상적은 아니지만 나는 그걸로 살 수 있습니다.

1

kxml2-2.2.2는 JavaME에서 작동하는 멋진 작은 lib (43K)이며 구문 분석을 수행하고 성공적으로 사용했습니다. 유일한 의존성은 8k 인 xmlpull입니다. 작게는 어때?

바인딩 마법을하지 않는다는 점에 유의하십시오.

0

XSD에서 클래스를 생성하고 코드를 인코딩/디코딩하는 XBinder라는 제품이 있습니다. 버전 2.1은 약 187K를 차지합니다. 버전 2.2 (2010 년 10 월 출시 예정)에는 약 101K가 소요됩니다 (Android 2.1에서는 v2.1보다 사용하기가 다소 편합니다). 그것을 확인하십시오 here.

관련 문제