나는 비슷한 요구 사항을 가지고 있었지만 RCP를 사용하지 않았습니다. UI를 다시로드 할 때마다로드 될 XML에 작성된 UI의 구조를 저장하려고한다고 알고 있습니다. 따라서 XML을 사용하는 경우 UI를 나타내는 XML 표준 문서에 스키마 또는 XSD 템플릿을 사용해야합니다. UI, 샘플 : 버튼, 텍스트 필드, 라벨 등에서 사용할 수있는 요소를 정의하십시오. XML을 작성할 때마다 또는 XML을 읽을 때마다 가능한 한 표준이되어야하므로 잘 정의 된 템플릿이 필요합니다.
xsd와 잘 어울리지 않으면 xml을 먼저 정의한 다음 xsd 생성기를 사용할 수 있습니다. 온라인에서 많은 것이 있습니다.
예를 들어
:
<UIBuilder>
<ownerProperties>
<username>Marcelo Tataje</username>
</ownerProperties>
<ui>
<header>
<textlabel label="Welcome" />
</header>
<menu>
<button label="Home" name="btnHome">goHome()</button>
<button label="Contacts" name="btnContacts">showContacts()</button>
</menu>
<mainFrame>
<textfield label="Name:" name="txtName" canEdit=false />
<button label="Show name" name="btnProcess">processData()</button>
</mainFrame>
<footer></footer>
</ui>
<UIBuilder>
을 그리고이에 따라, 당신은 스키마를 만들 수 있습니다
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="UIBuilder">
<xs:complexType>
<xs:sequence>
<xs:element name="ownerProperties">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="username"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ui">
<xs:complexType>
<xs:sequence>
<xs:element name="header">
<xs:complexType>
<xs:sequence>
<xs:element name="textlabel">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="label"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="menu">
<xs:complexType>
<xs:sequence>
<xs:element name="button" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="label" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mainFrame">
<xs:complexType>
<xs:sequence>
<xs:element name="textfield">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="label"/>
<xs:attribute type="xs:string" name="name"/>
<xs:attribute type="xs:string" name="canEdit"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="button">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="label"/>
<xs:attribute type="xs:string" name="name"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="footer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
을 나는 http://www.freeformatter.com/xsd-generator.html
을 사용 그리고를 만들 논리 처리를 만들기 위해 JAXB를 사용 잘 정의 된 형식의 XML 문서를 기반으로하는 UI