2011-01-18 3 views
1

(자바/파이썬) 객체를 XML로 역 직렬화 및 역 직렬화 할 수있는 XML 직렬화 라이브러리를 찾고 있습니다. Java 용으로 XStream을 사용하고 있습니다. XStream이 Xstream에 의해 생성 된 XML에서 비 직렬화 할 파이썬 버전을 가지고 있다면 그것을위한 것이 겠지요. Thrift 또는 기타 라이브러리는 데이터 형식을 xml로 허용하지 않으면 작동하지 않습니다. 나는 그것을 할 수있는 모든 도서관에 대한 제안을 찾고있다. - 고마워요Java와 Python 간의 XML 직렬화 라이브러리 상호 운용성

답변

1

자바와 파이썬 객체가 너무 다르기 때문에 양측에서 허용되는 유형 등을 제한하지 않으면 거의 불가능합니다.

그리고이 경우 XML이 아니더라도 좋은 상호 운용성 형식 인 JSON을 사용하는 것이 좋습니다.

그렇지 않으면 XStream XML을 가져 와서 Python 객체에로드하는 라이브러리를 쉽게 작성할 수 있지만 Java와 Python 간에는 항상 비슷한 것으로 제한됩니다.

0

자바 객체를 직렬화하고 파이썬 객체로 deserialise하는 자동화 된 방법을 찾을 가능성이 높습니다. 그것들은 다른 것들이므로, 번역하고 싶다면 한쪽 또는 양쪽 끝에 코드를 써야합니다.

문자열, 숫자, 부울 등이 매우 단순한 경우 거의 모든 언어에 대한 바인딩이 포함 된 매우 간단한 형식 인 json을 살펴볼 수 있습니다.

json.loads('{"test":false}') 

자이 썬, 자바에서 파이썬의 구현을 사용할 수 있습니다 문제를 접근하는 또 다른 방법은, 그래서 당신은 자바를 사용하여 객체를 직접 : 파이썬에서 JSON 객체를 Deserialising하는만큼 간단합니다.

0

문제는 XStream이 일반적인 데이터 매핑/바인딩 프레임 워크가 아니라 Java 객체 직렬화 프레임 워크라는 점입니다. 이것은 의도적으로 설계된 것입니다 (XStream FAQ 참조). 장점은 모든 종류의 Java 객체를 즉시 사용 가능하게 직렬화 및 비 직렬화 할 수 있다는 것입니다. 단점은 결과 XML 구조가 상당히 엄격하다는 것이며, 이름을 바꿀 수있는 반면 다른 구성 가능성은별로 없다는 것입니다.

그러나 XStream은 Java XML 처리 라이브러리가 아닙니다. 더 나은 대안으로 JAXB reference implementation 또는 JibX을 체크 아웃하면 처리 할 XML을보다 효율적으로 제어 할 수 있습니다. 이것은 좋은 상호 운용성을 달성하는 데 필요할 수 있습니다.

0

정말 XML을 사용해야합니까?

Java와 Python간에 구조화 된 데이터를 직렬화하려면 Google Protocol Buffers을 고려해야합니다.