(자바/파이썬) 객체를 XML로 역 직렬화 및 역 직렬화 할 수있는 XML 직렬화 라이브러리를 찾고 있습니다. Java 용으로 XStream을 사용하고 있습니다. XStream이 Xstream에 의해 생성 된 XML에서 비 직렬화 할 파이썬 버전을 가지고 있다면 그것을위한 것이 겠지요. Thrift 또는 기타 라이브러리는 데이터 형식을 xml로 허용하지 않으면 작동하지 않습니다. 나는 그것을 할 수있는 모든 도서관에 대한 제안을 찾고있다. - 고마워요Java와 Python 간의 XML 직렬화 라이브러리 상호 운용성
답변
자바와 파이썬 객체가 너무 다르기 때문에 양측에서 허용되는 유형 등을 제한하지 않으면 거의 불가능합니다.
그리고이 경우 XML이 아니더라도 좋은 상호 운용성 형식 인 JSON을 사용하는 것이 좋습니다.
그렇지 않으면 XStream XML을 가져 와서 Python 객체에로드하는 라이브러리를 쉽게 작성할 수 있지만 Java와 Python 간에는 항상 비슷한 것으로 제한됩니다.
자바 객체를 직렬화하고 파이썬 객체로 deserialise하는 자동화 된 방법을 찾을 가능성이 높습니다. 그것들은 다른 것들이므로, 번역하고 싶다면 한쪽 또는 양쪽 끝에 코드를 써야합니다.
문자열, 숫자, 부울 등이 매우 단순한 경우 거의 모든 언어에 대한 바인딩이 포함 된 매우 간단한 형식 인 json을 살펴볼 수 있습니다.
json.loads('{"test":false}')
자이 썬, 자바에서 파이썬의 구현을 사용할 수 있습니다 문제를 접근하는 또 다른 방법은, 그래서 당신은 자바를 사용하여 객체를 직접 : 파이썬에서 JSON 객체를 Deserialising하는만큼 간단합니다.
문제는 XStream이 일반적인 데이터 매핑/바인딩 프레임 워크가 아니라 Java 객체 직렬화 프레임 워크라는 점입니다. 이것은 의도적으로 설계된 것입니다 (XStream FAQ 참조). 장점은 모든 종류의 Java 객체를 즉시 사용 가능하게 직렬화 및 비 직렬화 할 수 있다는 것입니다. 단점은 결과 XML 구조가 상당히 엄격하다는 것이며, 이름을 바꿀 수있는 반면 다른 구성 가능성은별로 없다는 것입니다.
그러나 XStream은 Java XML 처리 라이브러리가 아닙니다. 더 나은 대안으로 JAXB reference implementation 또는 JibX을 체크 아웃하면 처리 할 XML을보다 효율적으로 제어 할 수 있습니다. 이것은 좋은 상호 운용성을 달성하는 데 필요할 수 있습니다.
정말 XML을 사용해야합니까?
Java와 Python간에 구조화 된 데이터를 직렬화하려면 Google Protocol Buffers을 고려해야합니다.
- 1. OpenCV Python 인터페이스와 ctypes 라이브러리 간의 상호 운용성
- 2. Python C 상호 운용성
- 3. System.Windows.Forms.Application과 System.Windows.Application 간의 상호 운용성
- 4. Java와 Android 간의 상호 작용
- 5. 두 AES 알고리즘 간의 상호 운용성
- 6. 상호 운용성
- 7. 실시간 Java 상호 운용성
- 8. .NET 상호 운용성 문제
- 9. C# - C 상호 운용성
- 10. .NET Com 상호 운용성
- 11. Cygwin에서 상호 운용성 문제
- 12. PHP와 Java 상호 운용성
- 13. 델파이의 .NET과의 상호 운용성
- 14. Firebird .NET 상호 운용성
- 15. Jacorb/Tao 상호 운용성
- 16. WCF 상호 운용성 테스트
- 17. Visual Studio 솔루션과 실행중인 응용 프로그램 간의 .NET 상호 운용성
- 18. Java와 Mathematica의 상호 작용
- 19. XML 직렬화 및 비누 직렬화
- 20. 축/SOAP 서비스 스타일 및 상호 운용성
- 21. iPhone/.NET WCF 상호 운용성
- 22. Windows.Forms 및 gtk # 상호 운용성?
- 23. bool과 C/C++ 상호 운용성
- 24. .NET 컴팩트 COM 상호 운용성
- 25. 스칼라와 자이 썬의 상호 운용성
- 26. WCF - Android/Iphone 상호 운용성
- 27. Java 및 .net 상호 운용성
- 28. WCF 및 Java 상호 운용성
- 29. 큰 XML 파일은 MSXML4/FreeThreadedDOMDocument40 (COM 문자열 상호 운용성 문제)
- 30. Java 및 C++ 암호화 상호 운용성