Advertisements

Thursday, January 16, 2014

BPEL 11g Handle XML without a namespace

Ahora me he encontrado con un escenario en el cual recibo un XML de un sistema externo y el XML no cuenta con un namespace.

Para este tipo de escenario siempre primero genero su correspondiente XSD usando el JDeveloper.


Voy a poner de ejemplo el sig. XML:


01<rowset>
02  <row num="1">
03    <bill_to>NULL</bill_to>
04    <description>2.8 GHz Computer</description>
05    <equipment_category>DSC</equipment_category>
06    <equipment_id>3658</equipment_id>
07    <part>HBISCPU</part>
08    <quantity>1</quantity>
09    <request_id>105913</request_id>
10    <total_cost>722.18</total_cost>
11    <unit_cost>722.18</unit_cost>
12  </row>
13  <row num="2">
14    <bill_to>NULL</bill_to>
15    <description>2.8 GHz Computer</description>
16    <equipment_category>DSC</equipment_category>
17    <equipment_id>3658</equipment_id>
18    <part>HBISCPU</part>
19    <quantity>1</quantity>
20    <request_id>105813</request_id>
21    <total_cost>722.18</total_cost>
22    <unit_cost>722.18</unit_cost>
23  </row>
24</rowset>


Ahora voy a proceder a generar su XSD.

En JDevelper presionamos "New" y en la galeria seleccionamos "XML Schema from XML Document"




Llenamos los datos para generar el nuevo esquema:




Para esto hay que dejar en blanco el campo de "Target Namespace".

El XSD quedaria de la siguiente manera:


01<xsd:schema elementformdefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
02  <xsd:element name="rowset">
03    <xsd:complextype>
04      <xsd:sequence>
05        <xsd:element maxoccurs="unbounded" name="row">
06          <xsd:complextype>
07            <xsd:sequence>
08              <xsd:element name="bill_to" type="xsd:string">
09              <xsd:element name="description" type="xsd:string">
10              <xsd:element name="equipment_category" type="xsd:string">
11              <xsd:element name="equipment_id" type="xsd:integer">
12              <xsd:element name="part" type="xsd:string">
13              <xsd:element name="quantity" type="xsd:integer">
14              <xsd:element name="request_id" type="xsd:integer">
15              <xsd:element name="total_cost" type="xsd:float">
16              <xsd:element name="unit_cost" type="xsd:float">
17            </xsd:element></xsd:element></xsd:element></xsd:element></xsd:element></xsd:element></xsd:element></xsd:element></xsd:element></xsd:sequence>
18            <xsd:attribute name="num" type="xsd:integer">
19          </xsd:attribute></xsd:complextype>
20        </xsd:element>
21      </xsd:sequence>
22    </xsd:complextype>
23  </xsd:element>
24</xsd:schema>

Ahora podemos importar nuestro XSD en BPEL para poder crear una variable y recibir el XML.

No comments:

Post a Comment