JAXB - Unrecognised Element Name Exception
I am not quite sure what is wrong here.
I have got a dtd file that has the following specification:
<!ELEMENT SomeElement (A,B?)>
<!ELEMENT AnotherElement (C | B)>
<!ELEMENT A(#PCDATA)>
<!ELEMENT C(#PCDATA)>
<!ELEMENT B (x,y,z)>
<!ELEMENT x(#PCDATA)>
<!ELEMENT y(#PCDATA)>
<!ELEMENT z(#PCDATA)>
And assume default binding schema.
I wrote a XML file based on the dtd and a java app to access the data.
The XML file
<SomeElement>
<A>Some Sentence</A>
<B>
<x>1</x>
<y>2</y>
<z>3</z>
</B>
</SomeElement>
<AnotherElement>
<C>123</C>
</AnotherElement>
During unmarshalling, it throws an UnrecognisedElementNameException: x
It seems that it cannot recognised element x, y and z.
I am pretty sure I have it defined in the dtd file so why is it complaining?
Can anyone shed some light on this for me?
Thanks
Let me attached the files. Perhaps that will ilustrate the problem better.
The dtd file
<!ELEMENT test (precondition, step+)>
<!ELEMENT precondition (description, include?)>
<!ELEMENT step (input|include)>
<!ELEMENT input (#PCDATA)>
<!ELEMENT include (testcaseid, scenarioid, (from, to?)?)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT testcaseid (#PCDATA)>
<!ELEMENT scenarioid (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT to (#PCDATA)>
The xml file
<?xml version="1.0"?>
<!DOCTYPE test SYSTEM "abc.dtd">
<test>
<precondition>
<description>NONE</description>
</precondition>
<step>
<include>
<testcaseid>TID</testcaseid>
<scenarioid>SID</scenarioid>
<from>F</from>
<to>T</to>
</include>
</step>
</test>
The application file
import java.util.*;
import java.io.*;
import javax.xml.bind.*;
import javax.xml.marshal.*;
public class testABC {
/** Creates new testABC */
public testABC() {
* @param args the command line arguments
public static void main (String args[]) {
try{
File sFile = new File("abcfile.xml");
FileInputStream sis = new FileInputStream(sFile);
try{
Test t = Test.unmarshal(sis);
System.out.println("Completed");
}finally{
sis.close();
}catch(Exception e){
e.printStackTrace();
Assume default schema binding
The error:
Cannot recognised the element testcaseid when try to unmarshall include element
Thanks :-)
Similar Messages
-
JAXB - Unexpected end of element {} - UnmarshalException Exception
Hi
I am using Jaxb 1.0 Beta on AIX an I am getting javax.xml.bind.UnmarshalException exception when I try to unmarshall XML document. XML document and schema are valid ( I generated both using XML spy )
Interestingly, the code works fine on windows 2000 but when I put the jar ,XML schema and xml document on unix it throws Unmarshall exception.
Here's what I am trying to do.
Code :
JAXBContext jc =
JAXBContext.newInstance( context,
new com.xyz.retail.app.points.pgp.JAXBClassLoader());
if(jc != null)
System.out.println("Got the context");
else
System.out.println("Error in getting context");
System.out.println("");
// create an Unmarshaller
Unmarshaller u = jc.createUnmarshaller();
System.out.println("Created the Unmarshaller");
System.out.println("");
// Unmarshal securities document into Java content tree
SecurityInfo securityInfo =
(SecurityInfo)u.unmarshal( new FileInputStream( secFile ) );
System.out.println("Unmarshaled the Document");
System.out.println("");
Schema :
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Yogesh
-->
<xs:schema targetNamespace="http://www.xyz.com/retail/app/points/pgp/util"
xmlns="http://www.xyz.com/retail/app/points/pgp/util" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="SecurityInfo" type="SecurityInfoType"/>
<xs:complexType name="SecurityInfoType">
<xs:sequence>
<xs:element ref="AirlinePartners"/>
</xs:sequence>
</xs:complexType>
<xs:element name="AirlinePartners">
<xs:complexType>
<xs:sequence>
<xs:element ref="AirlinePartner" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AirlinePartner">
<xs:complexType>
<xs:sequence>
<xs:element name="CardType" type="xs:string"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="TPrivate" type="xs:string"/>
<xs:element name="TPassphrase" type="xs:string"/>
<xs:element name="APublic" type="xs:string"/>
<xs:element name="PlainText" type="xs:string"/>
<xs:element name="CypherText" type="xs:string"/>
<xs:element name="TKeyExpiry" type="xs:date" min
Occurs="0"/>
<xs:element name="AKeyExpiry" type="xs:date" min
Occurs="0"/>
</xs:sequence>
</xs:complexType>
/xs:element>
</xs:schema>
XML File :
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Yogesh
-->
<!--Sample XML file generated by XMLSPY v5 rel. 2 U (http://www.xmlspy.com)-->
<SecurityInfo xmlns="http://www.xyz.com/retail/app/points/pgp/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=
"http://www.xyz.com/retail/app/points/pgp/util /home/lcards/temp/APSecInfo.xsd">
<AirlinePartners>
<AirlinePartner>
<CardType>x</CardType>
<Description>some card</Description>
<TPrivate>/home/lcards/temp/sachin.asc</TPrivate>
<TPassphrase>worldcup2003</TPassphrase>
<APublic>/home/lcards/temp/sunil.asc</APublic>
<PlainText>/home/lcards/files/outbox/x</PlainText>
<CypherText>/home/lcards/files/outbox/x</CypherText>
<TKeyExpiry>2005-08-15</TKeyExpiry>
<AKeyExpiry>2005-08-15</AKeyExpiry>
</AirlinePartner>
<AirlinePartner>
<CardType>y</CardType>
<Description>Another card</Description>
<TPrivate>/home/lcards/temp/kapil.asc</TPrivate>
<TPassphrase>worldcup1983</TPassphrase>
<APublic>/home/lcards/temp/dilip.asc</APublic>
<PlainText>/home/lcards/files/outbox/y</PlainText>
<CypherText>/home/lcards/files/outbox/y</CypherText>
<TKeyExpiry>2005-08-15</TKeyExpiry>
<AKeyExpiry>2005-08-15</AKeyExpiry>
</AirlinePartner>
</AirlinePartners>
</SecurityInfo>
Output:
Got the context
Created the Unmarshaller
DefaultValidationEventHandler: [ERROR]: Unexpected end of element {}:CardType
javax.xml.bind.UnmarshalException: Unexpected end of element {}:CardType
at com.sun.xml.bind.unmarshaller.UnreportedException.createUnmarshalExce
ption(UnreportedException.java:59)
at com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.reportAndThr
ow(SAXUnmarshallerHandlerImpl.java:406)
at com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.endElement(S
AXUnmarshallerHandlerImpl.java:108)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknow
n Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent
Dispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un
known Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.xml.bind.unmarshaller.UnmarshallerImpl.unmarshal(Unmarshaller
Impl.java:139)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
arshallerImpl.java:129)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnm
arshallerImpl.java:166)
at com.xyz.retail.app.points.pgp.APSecurityInfoFactory.getAPSecInfo
(APSecurityInfoFactory.java:102)
at com.xyz.retail.app.points.pgp.EncryptAndSign.init(EncryptAndSign
.java:183)
at com.xyz.retail.app.points.pgp.EncryptAndSign.encrypt(EncryptAndS
ign.java:581)
at com.xyz.retail.app.points.pos.CreateExportFiles.main(CreateExpor
tFiles.java:149)
Inside readKeys()
java.lang.NullPointerException
at com.xyz.retail.app.points.pgp.EncryptAndSign.readKeys(EncryptAnd
Sign.java:215)
at com.xyz.retail.app.points.pgp.EncryptAndSign.encrypt(EncryptAndS
ign.java:583)
at com.xyz.retail.app.points.pos.CreateExportFiles.main(CreateExpor
tFiles.java:149)
Inside buildCypherTextFileName()
java.lang.NullPointerException
at com.xyz.retail.app.points.pgp.EncryptAndSign.buildCypherTextFile
Name(EncryptAndSign.java:311)
at com.xyz.retail.app.points.pgp.EncryptAndSign.encrypt(EncryptAndS
ign.java:667)
at com.xyz.retail.app.points.pos.CreateExportFiles.main(CreateExpor
tFiles.java:149)
Exception in Main method
Thanks in advance for any help.
Yogesh.I'm having error. I'm using the lastest JWSDP (1.3) with JDK 1.4.2
Here is my XML file:
<?xml version="1.0"?>
<dataQA>
<table name="ELECTORAL_DISTRICT" >
<rules>
<rule number="1.1" description="Check if we have 301 EDs" >
<query result="301" >
<sql>SELECT COUNT(ED_ID) FROM ELECTORAL_DISTRICT</sql>
</query>
</rule>
<rule number="1.3" description="All fields must be populated" >
<query result="0" >
<sql>SELECT COUNT(ED_ID) FROM ELECTORAL_DISTRICT WHERE ED_CODE IS NULL OR ED_NAMEE IS NULL OR ED_NAMEF IS NULL</sql>
</query>
</rule>
</rules>
<reports>
<report number="1.4" name="Listing of EDs" file="ed_list" format="HTML" >
<column name="ED_ID" label="ID" ></column>
<column name="ED_CODE" label="Code" ></column>
<column name="ED_NAMEE" label="English Name" ></column>
<column name="ED_NAMEF" label="French Name" ></column>
<column name="PRVNC_ID" label="Province ID" ></column>
</report>
</reports>
</table>
</dataQA>
And my shema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="dataQA" type="DataQAType"/>
<xsd:complexType name="DataQAType">
<xsd:sequence>
<xsd:element name="table" type="TableType" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TableType">
<xsd:sequence>
<xsd:element name="rules" type="RulesType" />
<xsd:element name="reports" type="ReportsType" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="RulesType">
<xsd:sequence>
<xsd:element name="rule" minOccurs="1" maxOccurs="unbounded" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="query" type="QueryType" />
</xsd:sequence>
<xsd:attribute name="number" type="xsd:string" />
<xsd:attribute name="description" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportsType">
<xsd:sequence>
<xsd:element name="report" minOccurs="1" maxOccurs="unbounded" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="column" type="ColumnType" minOccurs="1" maxOccurs="unbounded" />
<xsd:element name="condition" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="number" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="file" type="xsd:string" />
<xsd:attribute name="format" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ColumnType">
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="label" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="QueryType">
<xsd:sequence>
<xsd:element name="sql" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="result" type="xsd:string" />
</xsd:complexType>
</xsd:schema>
I get the following exception:
DefaultValidationEventHandler: [FATAL_ERROR]: Unexpected end of element {}:report
Location: line 23 of file:/D:/Revise2.5/DataQA/config/test.xml
javax.xml.bind.UnmarshalException: Unexpected end of element {}:report
I'm currenlty in the processing of writting parser with DOM since I haven't found the yet. Is this a bug or I'm doing something wrong.
Thanks in advance for the reply,
- N. Thomassin -
JAXB: Unexpected element
Hi there,
I am using JAXB.
I have generated java classes by use of xjc. Let's say I have configured to generate the files in the java package "some.package". I use the classes in the following code snipped:
JAXBContext jc = JAXBContext.newInstance(
"some.package.simpson.bart:"+
"some.package.simpson.lisa");
Unmarshaller unmarshaller = jc.createUnmarshaller();
Data data= (Data) unmarshaller.unmarshal(new File("c:\\test.xml"));When I try to unmarshall an xml document I get the following error/exception:
DefaultValidationEventHandler: [ERROR]: Unexpected element {simpson:bart}:Data
Location: line xx of file:/c:/test.xml
javax.xml.bind.UnmarshalException: Unexpected element {simpson:bart}:Data
Can you help me?
Niko
I have two related DTDs:
<xs:schema targetNamespace="simpson:bart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="simpson:bart" elementFormDefault="qualified">
<xs:element name="DataType" type="xs:string"/>
</xs:schema>
<xs:schema targetNamespace="simpson:lisa" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="simpson:lisa" elementFormDefault="qualified">
<xs:element name="Data" type="xs:string"/>
</xs:schema>My test.xml looks like this:
<Data xmlns="simpson:lisa">
<DataType xmlns="simpson:bart">someValue</DataType>
<Data>Your schema tells me that the content of elements named "Data" should be of type "xs:string" and thus your instance document is not valid while it contains a nested element named "DataType".
In order to parse your instance document, you need a schema that defines a complex type for the Data element that allows a nested DataType element... something like this:
<xs:schema targetNamespace="simpson:lisa" xmlns:bart="simpson:bart" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="simpson:lisa" elementFormDefault="qualified">
<xs:import namespace="simpson:bart" schemaLocation="bart.xsd"/>
<xs:element name="Data">
<xs:complexType>
<xs:sequence>
<xs:element ref="bart:DataType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema> -
Error message : unexpected element name:
Hi people,
I'm trying to consume an external web service and encountered the following error when trying to run the service in JDeveloper. I'm new to both java and WSDL. Please lend a helping hand. Thanks for your help in advance.
Error:
C:\JDeveloper\jdk\bin\javaw.exe -client -classpath C:\E900\DEMO\Java\classes;C:\JDeveloper\webservices\lib\jaxrpc-api.jar;C:\JDeveloper\webservices\lib\wsclient.jar;C:\JDeveloper\webservices\lib\wsserver.jar;C:\JDeveloper\webservices\lib\wssecurity.jar;C:\JDeveloper\webservices\lib\wsdl.jar;C:\JDeveloper\webservices\lib\orasaaj.jar;C:\JDeveloper\webservices\lib\saaj-api.jar;C:\JDeveloper\webservices\lib\orawsdl.jar;C:\JDeveloper\webservices\lib\orawsrm.jar;C:\JDeveloper\webservices\lib\jaxr_api.jar;C:\JDeveloper\webservices\lib\orajaxr.jar;C:\JDeveloper\webservices\lib\relaxngDatatype.jar;C:\JDeveloper\webservices\lib\jaxb-impl.jar;C:\JDeveloper\webservices\lib\jaxb-libs.jar;C:\JDeveloper\webservices\lib\xsdlib.jar;C:\JDeveloper\webservices\lib\mdds.jar;C:\JDeveloper\jlib\jaxen.jar;C:\JDeveloper\jlib\oraclepki.jar;C:\JDeveloper\jlib\ojpse.jar;C:\JDeveloper\jlib\osdt_core.jar;C:\JDeveloper\jlib\osdt_cert.jar;C:\JDeveloper\jlib\osdt_xmlsec.jar;C:\JDeveloper\jlib\osdt_wss.jar;C:\JDeveloper\jlib\osdt_saml.jar;C:\JDeveloper\jlib\repository.jar;C:\JDeveloper\jlib\ojmisc.jar;C:\JDeveloper\j2ee\home\lib\http_client.jar;C:\JDeveloper\j2ee\home\jazncore.jar;C:\JDeveloper\j2ee\home\oc4jclient.jar;C:\JDeveloper\rdbms\jlib\xdb.jar;C:\JDeveloper\diagnostics\lib\ojdl2.jar;C:\E900\DEMO\ini\sbf;C:\E900\System\Classes\Base_JAR.jar;C:\E900\System\Classes\BizLogicContainer_JAR.jar;C:\E900\System\Classes\BusinessLogicServices_JAR.jar;C:\E900\System\Classes\Connector.jar;C:\E900\System\Classes\EventProcessor_JAR.jar;C:\E900\System\Classes\Generator_JAR.jar;C:\E900\System\Classes\JdbjBase_JAR.jar;C:\E900\System\Classes\JdbjInterfaces_JAR.jar;C:\E900\System\Classes\JdeNet_JAR.jar;C:\E900\System\Classes\Maf2Base_JAR.jar;C:\E900\System\Classes\mafsecurity.jar;C:\E900\System\Classes\Metadata.jar;C:\E900\System\Classes\MetadataInterface.jar;C:\E900\System\Classes\PMApi_JAR.jar;C:\E900\System\Classes\SBFFoundation_JAR.jar;C:\E900\System\Classes\Spec_JAR.jar;C:\E900\System\Classes\System_JAR.jar;C:\E900\System\Classes\SystemInterfaces_JAR.jar;C:\E900\System\Classes\castor.jar;C:\E900\System\Classes\log4j.jar;C:\E900\System\Classes\xerces.jar;C:\E900\System\Classes\xml-apis.jar;C:\E900\System\Classes\Rijndael.jar;C:\E900\System\Classes\ManagementAgent_JAR.jar;C:\E900\System\Classes\commons-logging.jar;C:\E900\System\Classes\commons-codec-1.3.jar;C:\E900\System\Classes\commons-httpclient-3.0.jar;C:\E900\System\Classes\jmxremote.jar;C:\E900\System\Classes\jmxremote_optional.jar;C:\E900\System\Classes\jmxri.jar;C:\E900\System\Classes\rmissl.jar;C:\E900\misc\classes12.jar;C:\E900\misc\mssqlserver.jar;C:\E900\misc\msutil.jar;C:\E900\misc\msbase.jar;C:\E900\misc\db2java.zip;C:\E900\misc\jt400.jar;C:\E900\misc\sqljdbc.jar;C:\E900\misc\ojdbc5.jar;C:\JDeveloper\lib\xmlparserv2.jar;C:\JDeveloper\lib\xml.jar oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient
calling http://XXX.XX.XXX.XX:8080/PSIGW/HttpListeningConnector
*unexpected element name: expected={http://xxxx.xxxx.com}EnquiryByLegacyIdResponse, actual=EnquiryByLegacyIdResponse*
at oracle.j2ee.ws.common.encoding.literal.LiteralObjectSerializerBase.internalDeserialize(LiteralObjectSerializerBase.java:231)
at oracle.j2ee.ws.common.encoding.literal.LiteralObjectSerializerBase.deserialize(LiteralObjectSerializerBase.java:159)
at oracle.e1.bssv.J5500002.proxy.runtime.CrmCustomerServiceSoapBinding_Stub._deserialize_EnquiryByLegacyId(CrmCustomerServiceSoapBinding_Stub.java:348)
at oracle.e1.bssv.J5500002.proxy.runtime.CrmCustomerServiceSoapBinding_Stub._readFirstBodyElement(CrmCustomerServiceSoapBinding_Stub.java:283)
at oracle.j2ee.ws.client.StreamingSender._sendImpl(StreamingSender.java:335)
at oracle.j2ee.ws.client.StreamingSender._send(StreamingSender.java:114)
at oracle.e1.bssv.J5500002.proxy.runtime.CrmCustomerServiceSoapBinding_Stub.enquiryByLegacyId(CrmCustomerServiceSoapBinding_Stub.java:238)
at oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient.enquiryByLegacyId(CrmCustomerServiceClient.java:55)
at oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient.main(CrmCustomerServiceClient.java:41)
Process exited with exit code 0.
--- the definition for java class "CrmCustomerServiceClient.java" ---_*
package oracle.e1.bssv.J5500002.proxy;
import oracle.webservices.transport.ClientTransport;
import oracle.webservices.OracleStub;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Stub;
public class CrmCustomerServiceClient {
private oracle.e1.bssv.J5500002.proxy.CrmCustomerService _port;
public CrmCustomerServiceClient() throws Exception {
ServiceFactory factory = ServiceFactory.newInstance();
_port = ((oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceService)factory.loadService(oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceService.class)).getCrmCustomerService();
* @param args
public static void main(String[] args) {
try {
oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient myPort = new oracle.e1.bssv.J5500002.proxy.CrmCustomerServiceClient();
System.out.println("calling " + myPort.getEndpoint());
// Add your own code here
EnquiryByLegacyId test = new EnquiryByLegacyId ();
test.setSETID("CTN");
test.setCPL_LEGACY_ID("03-135452");
//EnquiryByLegacyIdResponse response = new EnquiryByLegacyIdResponse();
//response = myPort.enquiryByLegacyId(test);
//EnquiryByLegacyIdResponse response = myPort.enquiryByLegacyId(test);
CrmCustomerId cus = new CrmCustomerId();
//cus = response.getEnquiryByLegacyIdReturn();
cus = (myPort.enquiryByLegacyId(test)).getEnquiryByLegacyIdReturn();
System.out.println("Your username is " + cus.getCUST_ID()+cus.getRESPOND_MSG());
} catch (Exception ex) {
ex.printStackTrace();
* delegate all operations to the underlying implementation class.
public EnquiryByLegacyIdResponse enquiryByLegacyId(EnquiryByLegacyId parameters) throws java.rmi.RemoteException {
return _port.enquiryByLegacyId(parameters);
public EnquiryByNationalIdResponse enquiryByNationalId(EnquiryByNationalId parameters) throws java.rmi.RemoteException {
return _port.enquiryByNationalId(parameters);
public EnquiryByNameResponse enquiryByName(EnquiryByName parameters) throws java.rmi.RemoteException {
return _port.enquiryByName(parameters);
public EnquiryByPhoneCellResponse enquiryByPhoneCell(EnquiryByPhoneCell parameters) throws java.rmi.RemoteException {
return _port.enquiryByPhoneCell(parameters);
* used to access the JAX-RPC level APIs
* returns the interface of the port instance
public oracle.e1.bssv.J5500002.proxy.CrmCustomerService getPort() {
return _port;
public String getEndpoint() {
return (String) ((Stub) port).getProperty(Stub.ENDPOINT_ADDRESS_PROPERTY);
public void setEndpoint(String endpoint) {
((Stub) port).setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, endpoint);
public String getPassword() {
return (String) ((Stub) port).getProperty(Stub.PASSWORD_PROPERTY);
public void setPassword(String password) {
((Stub) port).setProperty(Stub.PASSWORD_PROPERTY, password);
public String getUsername() {
return (String) ((Stub) port).getProperty(Stub.USERNAME_PROPERTY);
public void setUsername(String username) {
((Stub) port).setProperty(Stub.USERNAME_PROPERTY, username);
public void setMaintainSession(boolean maintainSession) {
((Stub) port).setProperty(Stub.SESSION_MAINTAIN_PROPERTY, Boolean.valueOf(maintainSession));
public boolean getMaintainSession() {
return ((Boolean) ((Stub) port).getProperty(Stub.SESSION_MAINTAIN_PROPERTY)).booleanValue();
* returns the transport context
public ClientTransport getClientTransport() {
return ((OracleStub) _port).getClientTransport();
--- the definition for java class "EnquiryByLegacyIdResponse.java" ---_*
package oracle.e1.bssv.J5500002.proxy;
public class EnquiryByLegacyIdResponse implements java.io.Serializable {
protected oracle.e1.bssv.J5500002.proxy.CrmCustomerId enquiryByLegacyIdReturn;
public EnquiryByLegacyIdResponse() {
public oracle.e1.bssv.J5500002.proxy.CrmCustomerId getEnquiryByLegacyIdReturn() {
return enquiryByLegacyIdReturn;
public void setEnquiryByLegacyIdReturn(oracle.e1.bssv.J5500002.proxy.CrmCustomerId enquiryByLegacyIdReturn) {
this.enquiryByLegacyIdReturn = enquiryByLegacyIdReturn;
__--- the definition for the WSDL" ---__+
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://xxxx.xxxx.com" xmlns:intf="http://xxxx.xxxx.com" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xxxx.xxxx.com">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xxxx.xxxx.com">
<element name="EnquiryByLegacyId">
<complexType>
<sequence>
<element name="SETID" type="xsd:string" />
<element name="CPL_LEGACY_ID" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="EnquiryByLegacyIdResponse">
<complexType>
<sequence>
<element name="EnquiryByLegacyIdReturn" type="impl:CrmCustomerId"/>
</sequence>
</complexType>
</element>
<complexType name="CrmCustomerId">
<sequence>
<element name="SETID" nillable="false" type="xsd:string"/>
<element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
<element name="CUST_ID" nillable="true" type="xsd:string"/>
<element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
</sequence>
</complexType>
<element name="EnquiryByNationalId">
<complexType>
<sequence>
<element name="SETID" type="xsd:string"/>
<element name="NATIONAL_ID" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="EnquiryByNationalIdResponse">
<complexType>
<sequence>
<element name="EnquiryByNationalIdReturn" type="impl:CrmCustomerId"/>
</sequence>
</complexType>
</element>
<complexType name="CrmCustomerId">
<sequence>
<element name="SETID" nillable="false" type="xsd:string"/>
<element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
<element name="CUST_ID" nillable="true" type="xsd:string"/>
<element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
</sequence>
</complexType>
<element name="EnquiryByName">
<complexType>
<sequence>
<element name="SETID" type="xsd:string"/>
<element name="LAST_NAME" type="xsd:string"/>
<element name="FIRST_NAME" type="xsd:string"/>
<element name="ADDRESS1" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="EnquiryByNameResponse">
<complexType>
<sequence>
<element name="EnquiryByNameReturn" type="impl:CrmCustomerId"/>
</sequence>
</complexType>
</element>
<complexType name="CrmCustomerId">
<sequence>
<element name="SETID" nillable="false" type="xsd:string"/>
<element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
<element name="CUST_ID" nillable="true" type="xsd:string"/>
<element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
</sequence>
</complexType>
<element name="EnquiryByPhoneCell">
<complexType>
<sequence>
<element name="SETID" type="xsd:string" />
<element name="PHONE_CELL" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="EnquiryByPhoneCellResponse">
<complexType>
<sequence>
<element name="EnquiryByPhoneCellReturn" type="impl:CrmCustomerId"/>
</sequence>
</complexType>
</element>
<complexType name="CrmCustomerId">
<sequence>
<element name="SETID" nillable="false" type="xsd:string"/>
<element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
<element name="CUST_ID" nillable="true" type="xsd:string"/>
<element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
</sequence>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="EnquiryByLegacyIdRequest">
<wsdl:part element="intf:EnquiryByLegacyId" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByLegacyIdResponse">
<wsdl:part element="intf:EnquiryByLegacyIdResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByNationalIdRequest">
<wsdl:part element="intf:EnquiryByNationalId" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByNationalIdResponse">
<wsdl:part element="intf:EnquiryByNationalIdResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByNameRequest">
<wsdl:part element="intf:EnquiryByName" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByNameResponse">
<wsdl:part element="intf:EnquiryByNameResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByPhoneCellRequest">
<wsdl:part element="intf:EnquiryByPhoneCell" name="parameters"/>
</wsdl:message>
<wsdl:message name="EnquiryByPhoneCellResponse">
<wsdl:part element="intf:EnquiryByPhoneCellResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="CrmCustomerService">
<wsdl:operation name="EnquiryByLegacyId">
<wsdl:input message="intf:EnquiryByLegacyIdRequest" name="EnquiryByLegacyIdRequest"/>
<wsdl:output message="intf:EnquiryByLegacyIdResponse" name="EnquiryByLegacyIdResponse"/>
</wsdl:operation>
<wsdl:operation name="EnquiryByNationalId">
<wsdl:input message="intf:EnquiryByNationalIdRequest" name="EnquiryByNationalIdRequest"/>
<wsdl:output message="intf:EnquiryByNationalIdResponse" name="EnquiryByNationalIdResponse"/>
</wsdl:operation>
<wsdl:operation name="EnquiryByName">
<wsdl:input message="intf:EnquiryByNameRequest" name="EnquiryByNameRequest"/>
<wsdl:output message="intf:EnquiryByNameResponse" name="EnquiryByNameResponse"/>
</wsdl:operation>
<wsdl:operation name="EnquiryByPhoneCell">
<wsdl:input message="intf:EnquiryByPhoneCellRequest" name="EnquiryByPhoneCellRequest"/>
<wsdl:output message="intf:EnquiryByPhoneCellResponse" name="EnquiryByPhoneCellResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CrmCustomerServiceSoapBinding" type="intf:CrmCustomerService">
<wsdlsoap:binding style=""/>
<wsdl:operation name="EnquiryByLegacyId">
<wsdlsoap:operation soapAction="#CPL_LEGACY_ID_ENQ#CCH_TEST"/>
<wsdl:input name="EnquiryByLegacyIdRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="EnquiryByLegacyIdResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EnquiryByNationalId">
<wsdlsoap:operation soapAction="#CPL_NATIONAL_ID_ENQ#CCH_TEST"/>
<wsdl:input name="EnquiryByNationalIdRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="EnquiryByNationalIdResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EnquiryByName">
<wsdlsoap:operation soapAction="#CPL_NAME_ENQ#CCH_TEST"/>
<wsdl:input name="EnquiryByNameRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="EnquiryByNameResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="EnquiryByPhoneCell">
<wsdlsoap:operation soapAction="#CPL_PHONE_CELL_ENQ#CCH_TEST"/>
<wsdl:input name="EnquiryByPhoneCellRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="EnquiryByPhoneCellResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CrmCustomerServiceService">
<wsdl:port binding="intf:CrmCustomerServiceSoapBinding" name="CrmCustomerService">
<wsdlsoap:address location="http://XXX.XX.XXX.XX:8080/PSIGW/HttpListeningConnector"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>I do not understand this WSDL! Its wrong!!
For e.g. why is this section repeated so many times:
<complexType name="CrmCustomerId">
<sequence>
<element name="SETID" nillable="false" type="xsd:string"/>
<element name="CPL_LEGACY_ID" nillable="true" type="xsd:string"/>
<element name="CUST_ID" nillable="true" type="xsd:string"/>
<element name="RESPOND_MSG" nillable="false" type="xsd:integer"/>
</sequence>
</complexType>
Also when creating what mapping did you choose? JAX-B or JAX-RPC?
Try JAX-B.
Venkat -
Unexpected element name: expected error while invoking external web service
Hi,
In JDeveloper when I invoke external web service call, I am getting following exception
"unexpected element name: expected=..."
But the same application works fine in .NET. Can someone help me as to why I am getting the exception only in JDeveloper and how to fix this exception.
Thanks.Hi,
Without more information, it will be hard to help, and tell you what could be teh issue.
Usually, this kind of error occurs when the payload and the WSDL schema are out of sync, for example if the order of the element on the wire do not match the order in a sequence declaration, you may get this error.
In such case, .NET handle the XML as if it was a 'all' -- no specific order -- and deserialize the message properly.
Hope this helps,
-eric -
Unexpected element name - confusion of types in client
I have a web service definition that performs four operations:
- String getTitle(long) - returns a title for a single asset
- StringArrayType) getTitles(LongArrayType) - returns an ordered list of titles matching input list
- AssetSummaryType getSummary(long) - Returns a complex type, summary information of an asset
- AssetSummaryArrayType getSummaries(LongArrayType) - Returns an array of complex types
Based on the WSDL (included at the bottom of this posting) I then generate the service
endpoint using wscompile and -f:wsi option (JDK 1.4.2-05 and JWSDP-1.4).
This is built into a raw war file and then cooked using wsdeploy.
On the client side I create stubs using wscompile and -f:wsi and compile
the resultant code. My client invokes each of the operations in turn, having been
provided the relevant 'longs' as input.
The service is deployed in JBoss-3.2.2 and the client is then executed from a separate JVM.
I then see the following client error:
java.rmi.RemoteException: Runtime exception; nested exception is:
unexpected element name: expected={http://example.com/myAssetWebSvc}Str
ingElement, actual={http://example.com/MyAssetWebSvc}AssetSummaryElement
at com.sun.xml.rpc.client.StreamingSender._handleRuntimeExceptionInSend(
StreamingSender.java:318)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:300
at example.com.wsclient.asset.AssetService_Stub.getTitle(AssetService_St
ub.java:175)
at example.com.wsclient.asset.AssetClient.testAssetTitleRetrieval(AssetC
lient.java:82)
at example.com.wsclient.asset.AssetClient.main(AssetClient.java:51)
Caused by: unexpected element name: expected={http://example.com/MyAssetWebSvc}
StringElement, actual={http://example.com/MyAssetWebSvc}AssetSummaryElement
at com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserial
ize(LiteralSimpleTypeSerializer.java:106)
at example.com.wsclient.asset.AssetService_Stub._deserialize_getTitle(As
setService_Stub.java:318)
at example.com.wsclient.asset.AssetService_Stub._readFirstBodyElement(As
setService_Stub.java:276)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:215
... 3 more
If I deploy the same service with only the first two operations defined within wsdl,
the error is not seen.
I have also tried compilation on JWSDP 1.3 and JDK 1.4.1-03 and in this case the same error
occurs but the other way around. The two 'title' operations work but the summary
operations fail with the actual element encountered being a StringElement or StringArrayElement
and the expected an AssetSummaryElement or AssetSummaryArrayElement.
Further, if I change the name of the StringElement to for example 'MyStringElement', this is
reported as the actual - i.e. there is no confusion with a standard type at play here.
I also use handlers, one on the server side to inspect security information and one on the
client to insert relevant details and look for returned errors within the header.
Is this a known problem within JWSDP 1.3 and/or 1.4? Are there any workarounds.
My wsdl is provided below along with the wscompile options and the matching configuration
files used.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="MyAssetService" targetNamespace="http://example.com/MyAssetWebSvc"
xmlns:tns="http://example.com/MyAssetWebSvc"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xsd:schema targetNamespace="http://example.com/MyAssetWebSvc"
xmlns:tns="http://example.com/MyAssetWebSvc"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="AssetSummaryType">
<xsd:all>
<xsd:element name="createdBy" type="xsd:string" />
<xsd:element name="createdDate" type="xsd:dateTime" />
<xsd:element name="description" type="xsd:string" />
<xsd:element name="fileSize" type="xsd:long" />
<xsd:element name="id" type="xsd:long" />
<xsd:element name="modifiedBy" type="xsd:string" />
<xsd:element name="modifiedDate" type="xsd:dateTime" />
<xsd:element name="organisation" type="xsd:string" />
<xsd:element name="owner" type="xsd:string" />
<xsd:element name="title" type="xsd:string" />
<xsd:element name="type" type="xsd:string" />
<xsd:element name="version" type="xsd:long" />
</xsd:all>
</xsd:complexType>
<xsd:complexType name="ExceptionType">
<xsd:all>
<xsd:element name="rootCause" type="xsd:string" nillable="true" />
</xsd:all>
</xsd:complexType>
<xsd:complexType name="LongArrayType">
<xsd:sequence>
<xsd:element name="LongItem" type="xsd:long" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AssetSummaryArrayType">
<xsd:sequence>
<xsd:element name="AssetSummaryItem" type="tns:AssetSummaryType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StringArrayType">
<xsd:sequence>
<xsd:element name="StringItem" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CredentialsType">
<xsd:all>
<xsd:element name="principal" type="xsd:string" />
<xsd:element name="password" type="xsd:string" />
</xsd:all>
</xsd:complexType>
<xsd:element name="LongElement" type="xsd:long"/>
<xsd:element name="StringElement" type="xsd:string"/>
<xsd:element name="LongArrayElement" type="tns:LongArrayType"/>
<xsd:element name="StringArrayElement" type="tns:StringArrayType"/>
<xsd:element name="AssetSummaryElement" type="tns:AssetSummaryType"/>
<xsd:element name="AssetSummaryArrayElement" type="tns:AssetSummaryArrayType"/>
<xsd:element name="CredentialsElement" type="tns:CredentialsType"/>
<xsd:element name="ExceptionElement" type="tns:ExceptionType"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getSummaryMessage">
<wsdl:part name="resourceId" element="tns:LongElement" />
</wsdl:message>
<wsdl:message name="getSummaryResponse">
<wsdl:part name="assetSummary" element="tns:AssetSummaryElement" />
</wsdl:message>
<wsdl:message name="assetException">
<wsdl:part name="exception" element="tns:ExceptionElement" />
</wsdl:message>
<wsdl:message name="getTitle">
<wsdl:part name="resourceId" element="tns:LongElement" />
</wsdl:message>
<wsdl:message name="getTitleResponse">
<wsdl:part name="assetTitle" element="tns:StringElement" />
</wsdl:message>
<wsdl:message name="getSummaries">
<wsdl:part name="resourceIdList" element="tns:LongArrayElement" />
</wsdl:message>
<wsdl:message name="getSummariesResponse">
<wsdl:part name="assetSummaryList" element="tns:AssetSummaryArrayElement" />
</wsdl:message>
<wsdl:message name="getTitles">
<wsdl:part name="resourceIdList" element="tns:LongArrayElement" />
</wsdl:message>
<wsdl:message name="getTitlesResponse">
<wsdl:part name="assetTitleList" element="tns:StringArrayElement" />
</wsdl:message>
<wsdl:message name="securityHeader">
<wsdl:part name="credentials" element="tns:CredentialsElement" />
</wsdl:message>
<wsdl:portType name="AssetService">
<wsdl:operation name="getSummary" parameterOrder="resourceId">
<wsdl:input message="tns:getSummaryMessage" />
<wsdl:output message="tns:getSummaryResponse" />
<wsdl:fault name="AssetException" message="tns:assetException" />
</wsdl:operation>
<wsdl:operation name="getTitle" parameterOrder="resourceId">
<wsdl:input message="tns:getTitle" />
<wsdl:output message="tns:getTitleResponse" />
<wsdl:fault name="AssetException" message="tns:assetException" />
</wsdl:operation>
<wsdl:operation name="getSummaries" parameterOrder="resourceIdList">
<wsdl:input message="tns:getSummaries" />
<wsdl:output message="tns:getSummariesResponse" />
<wsdl:fault name="AssetException" message="tns:assetException" />
</wsdl:operation>
<wsdl:operation name="getTitles" parameterOrder="resourceIdList">
<wsdl:input message="tns:getTitles" />
<wsdl:output message="tns:getTitlesResponse" />
<wsdl:fault name="AssetException" message="tns:assetException" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AssetServiceBinding" type="tns:AssetService">
<wsdl:operation name="getSummary">
<wsdl:input>
<soap:header required="true" message="tns:securityHeader" part="credentials" use="literal" actor="security"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="AssetException">
<soap:fault name="AssetException" use="literal"/>
</wsdl:fault>
<soap:operation soapAction="" />
</wsdl:operation>
<wsdl:operation name="getTitle">
<wsdl:input>
<soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="AssetException">
<soap:fault name="AssetException" use="literal"/>
</wsdl:fault>
<soap:operation soapAction="" />
</wsdl:operation>
<wsdl:operation name="getSummaries">
<wsdl:input>
<soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="AssetException">
<soap:fault name="AssetException" use="literal"/>
</wsdl:fault>
<soap:operation soapAction="" />
</wsdl:operation>
<wsdl:operation name="getTitles">
<wsdl:input>
<soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="AssetException">
<soap:fault name="AssetException" use="literal"/>
</wsdl:fault>
<soap:operation soapAction="" />
</wsdl:operation>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
</wsdl:binding>
<wsdl:service name="MyAssetService">
<wsdl:port name="AssetServicePort" binding="tns:AssetServiceBinding">
<soap:address location="http://localhost:9090/MyAssetWebSvc/asset" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Here is the wscompile for the server - this is within an ant script that substitutes the variables specified:
wscompile -keep -d ${path.classes} -s ${src.autojava} -import -model model.gz -f:wsi -f:documentliteral server-config.xml
and this is the server config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<wsdl location="file:///C:temp/MyAssetService_wsi.wsdl" packageName="example.com.wsserver.asset.wrapper">
<handlerChains>
<chain runAt="server">
<handler className="example.com.wsserver.security.SecurityServerHandler">
<property name="name" value="SecurityServerHandler"/>
</handler>
</chain>
</handlerChains>
</wsdl>
</configuration>
On the client side, here is the wscompile, again with ant variable substitution:
wscompile -gen:client -keep -d ${path.build.wsclient.class} -s ${path.build.wsclient.autojava} -classpath ${path.build.wsclient.class} -f:wsi -f:documentliteral client-config.xml
And here is the client config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
<wsdl location="file:///C:/temp/MyAssetService_wsi.wsdl" packageName="example.com.wsclient.asset">
<handlerChains>
<chain runAt="client">
<handler className="example.com.wsclient.security.SecurityClientHandler">
<property name="name" value="SecurityClientHandler"/>
</handler>
</chain>
</handlerChains>
</wsdl>
</configuration>
Note that I generate slightly different packages on client and server side. The server includes a 'wrapper' path on the package name - purely because the
generated code wrappers an existent api that I am making available as a web service. This is not needed to be seen
on the client side - i.e. the service appears as is without the wrapper.
I have tried omitting the documentliteral from the wscompiles and this seems to have no effect.
Any help gratefully received.
Best regards
LawrenceThanks for the prompting. I was convinced that the error was occurring client side as I could see no activity on the server. However having captured the soap request and responses its evident that this is not the case (which I'm a little confused on based on my original tests, but the error makes more sense in this context).
The request is below:
<env:Envelope xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://example.com/myAssetWebSvc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header>
<ns1:mmsSecurity env:actor="security" env:mustUnderstand="1" xmlns:ns1="http://example.com/myAssetWebSvc">
<principal>example.user</principal>
<password>mypassword</password>
</ns1:mmsSecurity>
</env:Header>
<env:Body>
<ns0:LongElement>166333</ns0:LongElement>
</env:Body>
</env:Envelope>
I can see from the body that the signature is not unique - its the same as that of the Summary operation. In this case, the server side is performing the summary (rather than the title that I had intended) and returning that response. This gives rise to the deserialisation error on the client side for the response.
Presumably I need to move to the wrapped document literal style so that the request is uniquely identified on the server side.
To me this was not an obvious gotcha, Could the parser (wscompile) be enhanced to trap identical request message definitions within a single service/endpoint definition (i.e. WSDL)? If so where should I post the request? -
Complex types with single array type element, marshaling exception
For our JAXRPC web service, we have a complex type, as follows:
<xs:complexType name = "SomeFault">
<xs:sequence>
<xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name = "ErrorMessageWSType">
<xs:restriction base = "xs:NMTOKEN">
<xs:enumeration value = "INVALID_1"/>
<xs:enumeration value = "INVALID_2"/>
<xs:enumeration value = "INVALID_3"/>
</xs:restriction>
</xs:simpleType>
We are running into Marshaling exceptions on the server side when the response/fault complex type has a single array type field.
weblogic.wsee.codec.CodecException: Failed to encode
com.bea.xml.XmlException: failed to find a suitable binding type for use in marshalling object "[Lnamespace.type.ErrorMessageWSType;@693767e9". using schema type: t=SomeFault@http://namespace/SOME/v1 java type:namespace.type.ErrorMessageWSType[]
If I change SomeFault, by adding another element, the error goes away.
<xs:complexType name = "SomeFault">
<xs:sequence>
<xs:element name = "errorMessages" type="some:ErrorMessageWSType" maxOccurs="unbounded" />
<xs:element name = "dummyString" type="xsd:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
Am I doing something wrong during the wsdlc code generation or is this a known issue?
<wsdlc srcWsdl="${wsdl.dir}/${wsdl.file.name}"
destJwsDir="${gen.src.dir}/gen-src-jar"
destImplDir="${main.src.dir}"
packageName="${package.prefix}" type="JAXRPC">Any luck with this? I am running into the same error. Apparently, this is not an issue with Java binding, but when invoking remote EJBs, we run into this. I am running 10.1.3.1 and the error is:
<fault>
<bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="summary">
<summary>
com.collaxa.cube.ws.wsif.providers.ejb.WSIFOperation_EJB@e26dbf : Could not invoke 'getIdentityInfo'; nested exception is:
org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
</summary>
</part>
<part name="detail">
<detail>
org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'ca.bc.gov.pssg.c3.webservices.identitymanagement.Identity' is not compatible; nested exception is:
oracle.xml.parser.v2.XMLDOMException: cannot add a node belonging to a different document
</detail>
</part>
</bindingFault>
</fault -
JAXB unmarshalling elements with xs:type explicitly set
I am working with XML content where the XSD defines an element as being of a complexType (say "ParentType") but the content explicitly sets the element's xs:type attribute to an extension of that complexType (say "ChildType").
As far as I can tell the XML is valid, but JAXB issues the following when unmarshalling:
DefaultValidationEventHandler: [ERROR]: Unexpected element {}:child1
javax.xml.bind.UnmarshalException: Unexpected element {}:child1
Where <child1> is added via the extension.
Is this a problem with JAXB or my XSD?
(XSD and XML enclosed below)
XSD ------------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:complexType name="ParentType">
<xs:sequence>
<xs:element name="parent1" type="xs:string"/>
<xs:element name="parent2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChildType">
<xs:complexContent>
<xs:extension base="ParentType">
<xs:sequence>
<xs:element name="child1" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="child" type="ParentType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML -----------------------
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="problem.xsd">
<child xsi:type="ChildType">
<parent1/>
<parent2/>
<child1/>
</child>
</root>JAXB doesn't handle OO schema design. I tried to do something similar where I defined a type called base and then defined that my document contained 1 or more base elements. Then I tried to unmarshall a document that contained elements that were of types extending from base. I ended up with the same issue.
It seems that when the xjc compiler defines the classes it isn't smart enough to realize the element defined as parent could also contain a child element since child extends parent. Your XSD and XML are valid.
I would think that JAXB should identify that because there is a type the extends the defined type, that an element of the sub-type might be subsituted i.e. check the actual type of the element in the XML before attempting to unmarshall it as the default type. It doesn't do that. I am not sure if this is as desinged, or a flaw in the implementation. -
JAXB: Nillable elements present in mashalled output
Hi!
I'm using JAXB to generate java objects and marshal them into XML.
My schema contains various elements declared as nillable:
<xs:element name="element1" type="xs:string" nillable="true">
<xs:element name="element2" type="xs:string" nillable="true">
<xs:element name="element3" type="xs:string" nillable="true">
When I try to marshal the corresponding object using JAXB API I get the following XML:
<element1 ns1:nil="true" xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"/>
<element2 ns2:nil="true" xmlns:ns2="http://www.w3.org/2001/XMLSchema-instance"/>
<element3>ABCD</element3>
Is there anyway I can get the output with onely element3 and suppress the null values of element1 and element2 from the output XML so that it only looks like:
<element3>ABCD</element3>
Any help will be really appreciated!
- RajInstaed nillable=true in schema please use minOccurs=0 JAXB will take care of it then. When you specify nillable=true it implements that the element is requred but it can be null so for the jaxb to not generate those field you need to change the schema to minOccurs = 0 and if it can appear more than once maxOccurs=unbounded.
-
Unexpected element name: expected WHEN INVOKING A WEB SERVICE
I am pretty new to Web Services and need some helping in resolving the following error. I created following two classes and published one of the method savePerson. When I tried to invoke the webservice through my browser passing the following:
<ns1:savePersonElement xmlns:ns1="http://mypackage17/Person.wsdl/types">
<ns1:sex>simpleType value</ns1:sex>
<ns1:human>
<ns2:last xmlns:ns2="http://tempuri.org">simpleType value</ns2:last>
<ns3:first xmlns:ns3="http://tempuri.org">simpleType value</ns3:first>
</ns1:human>
</ns1:savePersonElement>
I get the following error:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://mypackage17/Person.wsdl/types">
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>caught exception while handling request: unexpected element name: expected={http://mypackage17/Person.wsdl/types}name, actual={http://mypackage17/Person.wsdl/types}sex</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
But passing the following works fine as have passed all the parameters data:
<ns1:savePersonElement xmlns:ns1="http://mypackage17/Person.wsdl/types">
<ns1:name>simpleType value</ns1:name>
<ns1:sex>simpleType value</ns1:sex>
<ns1:human>
<ns2:last xmlns:ns2="http://tempuri.org">simpleType value</ns2:last>
<ns3:first xmlns:ns3="http://tempuri.org">simpleType value</ns3:first>
</ns1:human>
</ns1:savePersonElement>
Here is the code I have for the webservice:
package mypackage17;
*@oracle.ws.WebService name = "MyWebService2", serviceName = "MyWebService2", description = "", targetNamespace = "http://tempuri.org", schemaTargetNamespace = "http://mypackage17/Person.wsdl/types", endpointInterface = "mypackage17.MyWebService1SEI"
*@oracle.ws.SOAPBinding style = "DOCUMENT", use = "LITERAL", documentWrapped = "true", bindingName = "MyWebService1SoapHttp", portName = "MyWebService1Port"
public class Person extends Human
private String name;
private String sex;
public Person(){}
public void setName(String name)
this.name = name;
public void setSex(String sex)
this.sex = sex;
public String getName()
return this.name;
public String getSex()
return this.sex;
*@oracle.ws.DocumentWrapper requestType = "savePerson", requestElement = "savePersonElement", requestPart = "parameters", responseType = "savePersonResponse", responseElement = "savePersonResponseElement", responsePart = "parameters"
*@oracle.ws.WebMethod operationName = "savePerson", description = "", oneway = "false", documentWrapped = "true", inputMessage = "MyWebService1SEI_savePerson", outputMessage = "MyWebService1SEI_savePersonResponse", responsePart = "result"
*@oracle.ws.ParamPart position = "0", partName = "name", mode = "IN", soapHeader = "false"
*@oracle.ws.ParamPart position = "1", partName = "sex", mode = "IN", soapHeader = "false"
*@oracle.ws.ParamPart position = "2", partName = "human", mode = "IN", soapHeader = "false"
public void savePerson(String name, String sex, Human[] human)
System.out.println("Name: " + name);
System.out.println("Sex: " + sex);
System.out.println(human.length);
System.out.println("1 First: " + human[0].getFirst());
System.out.println("1 Last: " + human[0].getLast());
System.out.println("2 First: " + human[1].getFirst());
System.out.println("2 Last: " + human[1].getLast());
/****** THE OTHER CLASS ********/
package mypackage17;
public class Human
private String first;
private String last;
public Human(){}
public void setFirst(String first)
this.first = first;
public void setLast(String last)
this.last = last;
public String getFirst()
return this.first;
public String getLast()
return this.last;
Here is the WSDL generated using JDeveloper 10.1.3:
<?xml version="1.0" encoding="UTF-8" ?>
<definitions
name="MyWebService2"
targetNamespace="http://tempuri.org"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://tempuri.org"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:ns1="http://mypackage17/Person.wsdl/types"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org" elementFormDefault="qualified"
xmlns:tns="http://tempuri.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/">
<import namespace="http://mypackage17/Person.wsdl/types"/>
<complexType name="Human">
<sequence>
<element name="last" type="string" nillable="true"/>
<element name="first" type="string" nillable="true"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mypackage17/Person.wsdl/types"
elementFormDefault="qualified" xmlns:tns="http://mypackage17/Person.wsdl/types"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://tempuri.org">
<import namespace="http://tempuri.org"/>
<complexType name="savePerson">
<sequence>
<element name="name" type="string" nillable="true"/>
<element name="sex" type="string" nillable="true"/>
<element name="human" type="ns1:Human" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="savePersonResponse">
<sequence/>
</complexType>
<element name="savePersonElement" type="tns:savePerson"/>
<element name="savePersonResponseElement" type="tns:savePersonResponse"/>
</schema>
</types>
<message name="MyWebService1SEI_savePerson">
<part name="parameters" element="ns1:savePersonElement"/>
</message>
<message name="MyWebService1SEI_savePersonResponse">
<part name="parameters" element="ns1:savePersonResponseElement"/>
</message>
<portType name="MyWebService2">
<operation name="savePerson">
<input message="tns:MyWebService1SEI_savePerson"/>
<output message="tns:MyWebService1SEI_savePersonResponse"/>
</operation>
</portType>
<binding name="MyWebService1SoapHttp" type="tns:MyWebService2">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="savePerson">
<soap:operation soapAction="http://tempuri.org:savePerson"/>
<input>
<soap:body use="literal" parts="parameters"/>
</input>
<output>
<soap:body use="literal" parts="parameters"/>
</output>
</operation>
</binding>
<service name="MyWebService2">
<port name="MyWebService1Port" binding="tns:MyWebService1SoapHttp">
<soap:address location="http://192.168.2.101:8988/JavaWebService/MyWebService2"/>
</port>
</service>
</definitions>
Can someone tell what am I doing wrong. As it looks like I have to pass all the parameters for the method that is published but what if some are missing basically I want to keep all the parameters optional. How can I make the service to return the same what is passed when invoked. Any help is appreciated. I am using JDeveloper 10.1.3.To make the service return "whatever is passed", you have to take a step back and realize that there is a little understanding of XML Schema required.
When using a complexType, which is defined as a sequence, then you are implying an ordered sequence of elements. Default value for the 'minOccurs' attribute is 1. It's also important to understand that there is a difference between minOccurs=0 and nillable="true".
nillable="true" just means that the name element can carry a null value. If you want the name element to be optional, then you must use the minOccurs=0 and keep the maxOccurs to it's default value of 1. Using an array is just a bad work around. This is for deserialization (XML to JAVA).
The second part of you problem is on the serialization (or JAVA to XML). When you have a JAVA Bean, there is no way to make the difference between a member's value being null or not set, so it's impossible to decide if you need to send back a nul (xsi:nil="true"), an empty element <ns1:name/> or nothing.
That said, if you do want to go the XML route, you can use the dataBinding="false" flag in the different WSA command. Instead of converting XML into JAVA, you will have SOAPElement parameters, where you can do all you want (see WS user's guide [1] for details - chapter 16). Note that you have to make sure that the WSDL (your contract) reflect what you are doing on the wire (format of your messages), so that you do not geopardize your interoperability with other toolkit.
Note that this only applies to literal message formats (use attribute in WSDL), which is your case.
Hope this helps,
Eric
[1] http://download-west.oracle.com/otn_hosted_doc/ias/preview/web.1013/b14434.pdf -
JAXB 2.0 Marshaling Exception
Hello,
I ran into an error when trying marshal a java class. NullPointerException is caught when this line of code is executed. I previously used XJC to generate the Java classes including ObjectFactory.java in textjaxb.student package.
JAXBContext jaxbContext = JAXBContext.newInstance("testjaxb.student");After searching for solution, I tried to use different method for loading ObjectFactory class into .netInstance(...);. I tried using thread/context classloader, testjaxb.student.ObjectFactory.class as parameter. But the problem still persist. Any suggestion will be helpful.
The stacktrace shows the following:
Exception in thread "main" java.lang.NullPointerException
at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.calcXmlName(PropertyInfoImpl.java:287)
at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.calcXmlName(PropertyInfoImpl.java:260)
at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl.getTypes(ElementPropertyInfoImpl.java:100)
at com.sun.xml.bind.v2.model.impl.RuntimeElementPropertyInfoImpl.getTypes(RuntimeElementPropertyInfoImpl.java:50)
at com.sun.xml.bind.v2.model.impl.ElementPropertyInfoImpl$1.size(ElementPropertyInfoImpl.java:42)
at java.util.AbstractList$Itr.hasNext(AbstractList.java:416)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:139)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:49)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:41)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:189)
at com.sun.xml.bind.v2.model.impl.RegistryInfoImpl.<init>(RegistryInfoImpl.java:63)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.addRegistry(ModelBuilder.java:232)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:201)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:352)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$3.run(JAXBContextImpl.java:350)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:349)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:215)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:132)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)Thank you very much.
T-raI had the same problem and resolved it by removing the elementFormDefault="qualified" form the schema tag.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.calpers.ca.gov/soa/2006-12-21/CommonData.xsd"
targetNamespace="http://www.calpers.ca.gov/soa/2006-12-21/CommonData.xsd"
elementFormDefault="qualified">
<xs:element name="commonData" type="tns:CommonDataType"/>
<xs:complexType name="CommonDataType">
<xs:sequence>
<xs:element name="defaultPayloadData" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema> -
Error rendering element. Exception: ORA-00942: table or view does not exist
Guru,
We are maintaining 10 internal Database through OEM 10g and using seesded reports.
When we try to create simple custom reports against one of the Target database , its failing with following error message ,
Query : select * from v$database
Error rendering element.
Exception: ORA-00942: table or view does not exist
select * from dual & v$session working ( But query execution happeniing from Reposistory Database not from Target instance )
Note:
I have reviewed thred "getting ORA-00942 while running report in GC"
Please give some light .
Regards,
RajuThis is an EM related question so I would suggest you post in the appropriate space "Enterprise Manager" -- https://forums.oracle.com/community/developer/english/enterprise_management/enterprise_manager/enterprise_manager_6
You may also review (In Grid Control 10.2, Creating a Report to Query 'V$SESSION 'Fails: 'Error Rendering Element. Exception: ORA-00942 Table Or View Does Not Exist' (Doc ID 356755.1)) and implement the solution for v$database
Thanks,
Hussein -
Element name too long when using ROWTYPE
I've come across an issue with xml element names longer than 30 characters. Seems it has something to do with ROWTYPE. Creation of this function is successful:
<pre>
CREATE OR REPLACE FUNCTION test_fnc
RETURN XMLTYPE
AS
var_return XMLTYPE;
l_dummy DUAL.dummy%TYPE;
BEGIN
SELECT dummy INTO l_dummy FROM DUAL;
SELECT XMLCONCAT(XMLELEMENT (
"TEST",
XMLFOREST (
l_dummy "THIS_IS_OVER_30_CHARACTERS_LONG"
data_set
INTO var_return
FROM DUAL;
RETURN var_return;
END test_fnc;
</pre>
However, specifying the variable as ROWTYPE gives ORA-00972 error (unless I shorten the element name...):
<pre>
CREATE OR REPLACE FUNCTION test_fnc
RETURN XMLTYPE
AS
var_return XMLTYPE;
l_dummy DUAL%ROWTYPE;
BEGIN
SELECT dummy INTO l_dummy FROM DUAL;
SELECT XMLCONCAT(XMLELEMENT (
"TEST",
XMLFOREST (
l_dummy.dummy "THIS_IS_OVER_30_CHARACTERS_LONG"
data_set
INTO var_return
FROM DUAL;
RETURN var_return;
END test_fnc;
</pre>
Has anyone come across this before, or have any ideas for a solution? I could specify all my variables as TYPE but as there are many within the tables it would be easier to use ROWTYPE.
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
Thanks.it works if you add "AS" after l_dummy.dummy
SQL> CREATE OR REPLACE FUNCTION test_fnc
2 RETURN XMLTYPE
3 AS
4 var_return XMLTYPE;
5 l_dummy DUAL%ROWTYPE;
6 BEGIN
7 SELECT dummy INTO l_dummy FROM DUAL;
8
9 SELECT XMLCONCAT(XMLELEMENT (
10 "TEST",
11 XMLFOREST (
12 l_dummy.dummy AS "THIS_IS_OVER_30_CHARACTERS_LONG"
13 )
14 ))
15 data_set
16 INTO var_return
17 FROM DUAL;
18 RETURN var_return;
19 END test_fnc;
20 /
Function created.Ants -
XML element names required in lower case
Hi,
I am on release 4.6C
I create an XML file from internal table using FM SDIXML_DATA_TO_DOM and SDIXML_DOM_TO_XML.
The internal table is defined such that the fieldnames of internal table are same as element names in XML file.
The XML file gets created properly, but the element names appear in upper case.
The requirement is to have it in lower case.
Does anybody have any idea about how to control the case here?Hi Sudhir
you can convert field names manually using translate command to convert it to lower case.
hope this helps. -
Simple Transformation with very long XML element names
I am trying to write a program to deserialize XML documents using the Simple Transformation technique. There are many optional elements in the XML document, so I need to have conditional statements statements to avoid trying to process elements that are not in the document. The XML document, however, has several Element Names that are greater than 30 characters in length. The Simple Transformation technique seems to require ABAP data dictionary structures that mirror the schema of the XML document. But one cannot create structure component names that are greater than 30 characters in length. We don't have any control over the XML schema as the XML documents come from the US government. The ST fragment below shows the statement that I want to write, but since the ABAP Structure PlasticCardInformationGroup cannot have a component AuthorizationResponseInformation, the ST syntax checker yields an "Illegal Reference ADDITIONALPLASTICCARDINFORMATION" error message.
Does anyone know a way to avoid this error?
<tt:d-cond check="exist(TRS_TradingPartner_Agreement.TRS_FinancialTransaction.PlasticCardInformationGroup.AdditionalPlasticCardInformation)">
<ns2:AdditionalPlasticCardInformation>
<tt:attribute name="CardNetworkType" value-ref="TRS_TRADINGPARTNER_AGREEMENT.TRS_FINANCIALTRANSACTION.PLASTICCARDINFORMATIONGROUP.ADDITIONALPLASTICCARDINFORMATI.CARDNETWORKTYPE"/>
<tt:attribute name="DraftLocatorNumber" value-ref="TRS_TRADINGPARTNER_AGREEMENT.TRS_FINANCIALTRANSACTION.PLASTICCARDINFORMATIONGROUP.ADDITIONALPLASTICCARDINFORMATI.DRAFTLOCATORNUMBER"/>
</ns2:AdditionalPlasticCardInformation>could anyone help me?
Maybe you are looking for
-
I just have a procedure in which i do have a dynamic query.It has certain parameter on the basis of which different set of columns will be returned in the result set. Now I want a SSRS report which can automatically pick up the columns from the Proce
-
Ms 8348 no longer able to write
Hi ya all, my ms 8348 48x16x48 writer doesnt write any more it just keeps telling me to insert a blank cd in. W ould a firmware upgrade help - can't even find one for the ms 8348. TIA
-
Confirmation - error in process - idoc status 29
HI , i got one new problem today. This is one of the case when one user createsconfirmation of the Purchase order and then Confirmation status goes to error in process. i check in RZ20 and found error in Idoc which is generated from that confirmation
-
how do you put sound and music on an application (not applet). where should i store the music files also.
-
any thoughts regarding this CC issue. do you think someone else is logged in using my password info?