Altova MapForce 2025 Enterprise Edition

Nachdem Sie anhand des Beispielschemas) Code generiert haben, wird eine Java-Testapplikation sowie eine Reihe von unterstützenden Altova-Bibliotheken generiert. Wie bereits erwähnt, hat das Beispielschema (Main.xsd) mehrere Namespace-Deklarationen. Der generierte Code enthält daher die folgenden Namespaces, die Namespace-Aliassen (Präfixen) aus dem Schema entsprechen: com.Main.ord, com.Main.pur, com.Main.cmn und com.Main.cust.

 

Wenn Sie XML Namespaces und -Präfixe mit Hilfe von Schema Wrapper-Bibliotheken festlegen möchten, stehen Ihnen die folgenden Methoden zur Verfügung:

 

declareAllNamespacesFromSchema(). Mit Hilfe dieser Methode können Sie in Ihrer XML-Instanzdatei dieselben Namespaces wie im Schema deklarieren. Wenn Sie, wie in diesem Beispiel andere Namespaces benötigen, verwenden Sie declareNamespace(), Die Methode declareAllNamespacesFromSchema() wird in diesem Beispiel nicht verwendet, weil wir hier XML-Elemente erstellen möchten, deren Präfixe sich von den im Schema deklarierten geringfügig unterscheiden.

declareNamespace(). Mit Hilfe dieser Methode können Sie ein Namespace-Präfix-Attribut in einem Element erstellen oder das vorhandene überschreiben. Das Element muss bereits erstellt worden sein - entweder mit der Methode append() oder mit appendWithPrefix(), wie weiter unten gezeigt.

appendWithPrefix(). Mit Hilfe dieser Methode können Sie ein bestimmtes Präfix an ein Instanzelement anhängen. Um das in diesem Beispiel gezeigte XML-Instanzdokument zu erstellen, genügte es, diese Methode nur für das Root-Element aufzurufen. Alle anderen Elemente wurden durch Aufruf von append() erstellt. Ihr Präfix wurde automatisch gemäß den obigen Regeln auf Basis des Namespace hinzugefügt.

 

Im Codefragment unten sehen Sie, wie Sie ein XML-Dokument mit mehreren Namespace-Deklarationen und als Präfix vorangestellten Elementnamen erstellen. Dabei wird eine Bestellungsinstanz, wie im Beispiel: Bestellung gezeigt, generiert. Beachten Sie bitte, dass einige Präfixe in der XML-Instanz zur Darstellungszwecken außer Kraft gesetzt werden (d.h. Sie sind nicht genau gleich wie die im Schema deklarierten).

 

protected static void example() throws Exception {
  // Create the XML document and append the root element
  com.Main.pur.Main2 doc = com.Main.pur.Main2.createDocument();
  com.Main.pur.PurchaseType purchase = doc.Purchase.appendWithPrefix("p");
 
  // Set schema location
  doc.setSchemaLocation("Main.xsd");
 
  // Declare namespaces on root element
  purchase.declareNamespace("o", "http://NamespaceTest.com/OrderTypes");
  purchase.declareNamespace("c", "http://NamespaceTest.com/CustomerTypes");
  purchase.declareNamespace("cmn", "http://NamespaceTest.com/CommonTypes");
 
  // Append the OrderDetail element
  com.Main.ord.OrderType order = purchase.OrderDetail.append();
  com.Main.ord.ItemType item = order.Item.append();
  item.ProductName.append().setValue("Lawnmower");
  item.Quantity.append().setValue(1);
  java.math.BigDecimal price = new java.math.BigDecimal("148.42");
  item.UnitPrice.append().setValue(price);
 
  // Append the PaymentMethod element
  com.Main.cmn.PaymentMethodTypeType paymentMethod = purchase.PaymentMethod.append();
  paymentMethod.setEnumerationValue(com.Main.cmn.PaymentMethodTypeType.EVISA);
 
  // Append the CustomerDetails element
  com.Main.cust.CustomerType customer = purchase.CustomerDetails.append();
  customer.Name.append().setValue("Alice Smith");
  com.Main.cmn.AddressType deliveryAddress = customer.DeliveryAddress.append();
  deliveryAddress.Line1.append().setValue("123 Maple Street");
  deliveryAddress.Line2.append().setValue("Mill Valley");
  com.Main.cmn.AddressType billingAddress = customer.BillingAddress.append();
  billingAddress.Line1.append().setValue("8 Oak Avenue");
  billingAddress.Line2.append().setValue("Old Town");
 
  // Save to file
  doc.saveToFile("PurchaseOrder.xml", true);
}

© 2018-2024 Altova GmbH