Java 객체의 트리를 상상해보십시오. 즉, 기본적으로 정수와 같은 기본 유형에 도달 할 때까지 다른 클래스의 객체 인 속성을 포함하는 일부 클래스의 최상위 객체를 상상해보십시오 또는 문자열 등 예를 들어Java 객체의 트리를 사용자 정의 XML로 직렬화
class Car {
private Door _leftDoor;
private Door _rightDoor;
}
class Door {
private String _name;
}
클래스 Car
의 최상위 객체를 직렬화함으로써,이 같은 예를 들어, XML 문서를보고 싶다 : 그런데
<object type="Car">
<property type="Door" identifier="_leftDoor">
<object type="Door">
<property type="String" identifier="_name">I am a left door!</property>
</object>
</property>
<property type="Door" identifier="_rightDoor">
<object type="Door">
<property type="String" identifier="_name">I am a right door!</property>
</object>
</property>
</object>
을 이 조각이 어떻게 될 수 있는지 주목해라. 예를 들어 Car
오브젝트가 다른 상위 오브젝트의 특성 인 경우와 같이 다른 계층 구조로 구분됩니다.
내 질문은 :이 을 패터닝, structurewise, designwise, architecturewise 을 구현하는 올바른 방법 일 것입니다 무슨? 내 질문에 약간의 설명이 필요하다고 생각합니다. 내 마음에 오는이를 구현하는 첫 번째 간단한 방법은 자바의 기존 toString
비슷한입니다
class Car {
...
public Element toElement(Element element) {
Document document = element.getOwnerDocument();
Attr attr;
Element objectElement = document.createElement("object");
element.appendChild(objectElement);
attr = document.createAttribute("type");
attr.setValue(class.getSimpleName());
objectElement.setAttributeNode(attr);
Element propertyElement;
propertyElement = document.createElement("property");
objectElement.appendChild(propertyElement);
attr = document.createAttribute("type");
attr.setValue(_leftDoor.getClass().getSimpleName());
propertyElement.setAttributeNode(attr);
attr = document.createAttribute("identifier");
attr.setValue("_leftDoor");
propertyElement.setAttributeNode(attr);
_leftDoor.toElement(propertyElement);
propertyElement = document.createElement("property");
objectElement.appendChild(propertyElement);
attr = document.createAttribute("type");
attr.setValue(_rightDoor.getClass().getSimpleName());
propertyElement.setAttributeNode(attr);
attr = document.createAttribute("identifier");
attr.setValue("_rightDoor");
propertyElement.setAttributeNode(attr);
_rightDoor.toElement(propertyElement);
return objectElement;
}
}
class Door {
...
public Element toElement(Element element) {
...
}
}
어떻게 좋은 직접 클래스를 대응하는 방법으로 XML 직렬화의이 종류를 추가하는 의미에서이 아이디어? 매개 변수로 Element
을 사용하도록 제한 한 것이 좋습니까 (Java XML API가 설계된 방식 때문에 강제로 수행 할 수 있습니다). 내가 돌아 오는 것이 좋다 Element
? 이 구현에서 아키텍처 관점에서 개선 할 수있는 아이디어가 있습니까? 어떤 조언을 환영합니다.
나는 java.beans.XMLEncoder
시설을 알고 있지만이 경우 Java 특정 XML 시리얼 라이저이며이 경우에는 나를 위해 중복됩니다.
XStream은 순수한 XML 마샬링/언 마샬링이라는 매우 흥미로운 소프트웨어입니다. 나는 또한 JAXB가 Java SE와 함께 번들로 제공된다는 사실을 알게되었고, 이제는 JAXB도 JAXB를 대신 할 수있는 또 다른 대안이되었습니다! ** [JAXB와 XStream의 차이점은 무엇입니까?] (http://blog.bdoughan.com/2010/10/how-does-jaxb-compare-to-xstream.html) ** 기사는 . 나는 어쨌든 바퀴 재 탄생 팬이 아니기 때문에 내가 달성하고 싶은 것에이 방법을 어떻게 든 적용 할 수있을 것이라고 생각한다. 그래서 이것을 지적 해 주셔서 고맙습니다. 저는 누군가가 이미 저보다 훨씬 잘 해냈다는 것을 알았습니다. –