Hi @ all!
Ich habe mich gerade in JaxMe2 eingearbeitet, ein OpenSource-Projekt von Apache (http://ws.apache.org/jaxme/), mit den man von einem Xml-Schema eine Java-Bean-Struktur erzeugen kann.
Es funktioniert eigentlich sehr gut, bis auf einem Punkt:
Wenn ein Element in einem Xml-File mehrmals vorkommen kann, erstellt JaxMe2 intern eine private Instanzvariable vom Typ java.util.ArrayList um mehrere Instanzen von diesem Element speichern zu können.
Diese List erhält man mit einer entsprechenden get()-Methode, jedoch kann man kein Element zu dieser ArrayList adden, da nirgendswo eine Spur von einer add()- oder set()-Methode ist.
Hatte jemand dasselbe Problem und vielleicht eine Lösung?
Bitte um Rat!
Hier noch ein Beispiel:
the shiporder.xsd, which describes a shiporder:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://uniquare.com/shiporder">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs
ositiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
The JavaBean-Structur:
package shiporder;
public interface ShiporderType {
public interface ItemType {
...
...
}
public java.lang.String getOrderperson();
public void setOrderperson(java.lang.String pOrderperson);
public java.util.List getItem();
}
--------------------------------------------------
Mit der getItem()-Methode im Interface bekomm ich die Liste der Items, jedoch gibt es keine Methode um ein Item hinzuzufügen. Direkter Zugriff ist nicht möglich, weil die ArrayList in der Klasse, die dieses Interface implementiert, private ist.
Ich habe mich gerade in JaxMe2 eingearbeitet, ein OpenSource-Projekt von Apache (http://ws.apache.org/jaxme/), mit den man von einem Xml-Schema eine Java-Bean-Struktur erzeugen kann.
Es funktioniert eigentlich sehr gut, bis auf einem Punkt:
Wenn ein Element in einem Xml-File mehrmals vorkommen kann, erstellt JaxMe2 intern eine private Instanzvariable vom Typ java.util.ArrayList um mehrere Instanzen von diesem Element speichern zu können.
Diese List erhält man mit einer entsprechenden get()-Methode, jedoch kann man kein Element zu dieser ArrayList adden, da nirgendswo eine Spur von einer add()- oder set()-Methode ist.
Hatte jemand dasselbe Problem und vielleicht eine Lösung?
Bitte um Rat!
Hier noch ein Beispiel:
the shiporder.xsd, which describes a shiporder:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://uniquare.com/shiporder">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
The JavaBean-Structur:
package shiporder;
public interface ShiporderType {
public interface ItemType {
...
...
}
public java.lang.String getOrderperson();
public void setOrderperson(java.lang.String pOrderperson);
public java.util.List getItem();
}
--------------------------------------------------
Mit der getItem()-Methode im Interface bekomm ich die Liste der Items, jedoch gibt es keine Methode um ein Item hinzuzufügen. Direkter Zugriff ist nicht möglich, weil die ArrayList in der Klasse, die dieses Interface implementiert, private ist.