XML Data Binding 

by Eldon Metz and Allen Brookes



Listing One

<?xml version="1.0"?>

<purchaseOrder orderDate="1999-10-20">

  <shipTo country="US">

    <name>Alice Smith</name>

    <street>123 Maple Street</street>

    <city>Mill Valley</city>

    <state>CA</state>

    <zip>90952</zip>

  </shipTo>

  <billTo country="US">

    <name>Robert Smith</name>

    <street>8 Oak Avenue</street>

    <city>Old Town</city>

    <state>PA</state>

    <zip>95819</zip>

  </billTo>

  <comment>Hurry, my lawn is going wild!</comment>

  <items>

    <item partNum="872-AA">

      <productName>Lawnmower</productName>

      <quantity>1</quantity>

      <USPrice>148.95</USPrice>

      <comment>Confirm this is electric</comment>

    </item>

    <item partNum="926-AA">

      <productName>Baby Monitor</productName>

      <quantity>1</quantity>

      <USPrice>39.98</USPrice>

      <shipDate>1999-05-21</shipDate>

    </item>

  </items>

</purchaseOrder>



Listing Two

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <xsd:annotation>

  <xsd:documentation xml:lang="en">

   Purchase order schema for Example.com.

   Copyright 2000 Example.com. All rights reserved.

  </xsd:documentation>

 </xsd:annotation>

 <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>

 <xsd:element name="comment" type="xsd:string"/>

 <xsd:complexType name="PurchaseOrderType">

  <xsd:sequence>

   <xsd:element name="shipTo" type="USAddress"/>

   <xsd:element name="billTo" type="USAddress"/>

   <xsd:element ref="comment" minOccurs="0"/>

   <xsd:element name="items"  type="Items"/>

  </xsd:sequence>

  <xsd:attribute name="orderDate" type="xsd:date"/>

 </xsd:complexType>

 <xsd:complexType name="USAddress">

  <xsd:sequence>

   <xsd:element name="name"   type="xsd:string"/>

   <xsd:element name="street" type="xsd:string"/>

   <xsd:element name="city"   type="xsd:string"/>

   <xsd:element name="state"  type="xsd:string"/>

   <xsd:element name="zip"    type="xsd:decimal"/>

  </xsd:sequence>

  <xsd:attribute name="country" type="xsd:NMTOKEN"

     fixed="US"/>

 </xsd:complexType>

 <xsd:complexType name="Items">

  <xsd:sequence>

   <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">

    <xsd:complexType>

     <xsd:sequence>

      <xsd:element name="productName" type="xsd:string"/>

      <xsd:element name="quantity">

       <xsd:simpleType>

        <xsd:restriction base="xsd:positiveInteger">

         <xsd:maxExclusive value="100"/>

        </xsd:restriction>

       </xsd:simpleType>

      </xsd:element>

      <xsd:element name="USPrice"  type="xsd:decimal"/>

      <xsd:element ref="comment"   minOccurs="0"/>

      <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>

     </xsd:sequence>

     <xsd:attribute name="partNum" type="SKU" use="required"/>

    </xsd:complexType>

   </xsd:element>

  </xsd:sequence>

 </xsd:complexType>

 <!-- Stock Keeping Unit, a code for identifying products -->

 <xsd:simpleType name="SKU">

  <xsd:restriction base="xsd:string">

   <xsd:pattern value="\d{3}-[A-Z]{2}"/>

  </xsd:restriction>

 </xsd:simpleType>

</xsd:schema>



Listing Three

public class PurchaseOrderType {

   ...

  public PurchaseOrderType() {

    ...

  }

  public boolean equals(Object rhs) {

    ...

  }

  public void unmarshal(InputStream in) throws XmlParseException {

    ...

  }

  public void marshal(OutputStream out) throws XmlSerializeException {

    ...

  }

  public boolean isValid() throws XmlValidationException {

    ...

  }

  public USAddress getShipTo() {

    ...

  }

  public void setShipTo(USAddress ShipTo) {

    ...

  }

  public USAddress getBillTo() {

    ...

  }

  public void setBillTo(USAddress BillTo) {

    ...

  }

  public String getComment() {

    ...

  }

  public void setComment(String Comment) {

    ...

  }

  public boolean isCommentSet() {

    ...

  }

  public Items getItems() {

    ...

  }

  public void setItems(Items Items) {

    ...

  }

  public java.util.Date getOrderDate() {

    ...

  }

  public void setOrderDate(java.util.Date OrderDate) {

    ...

  }

  public boolean isOrderDateSet() {

    ...

  }

}



Listing Four

public class Items {

  ...

  public Items() {

    ...

  }

  ...

  public Vector getItemVector() {

    ...

  }

  public void setItemVector(Vector Item) {

    ...

  }

  ...

}

 

Listing Five

public class XmlParseException extends Exception {

  ...

  public XmlParseException(String msg, String src, 

                                     int lineNumber, int columnNumber) {

    ...

  }

  public String toString() {

    ...

  }

  public int getLineNumber() {

    ...

  }

  public int getColumnNumber() {

    ...

  }











2



