Hi,
I am new to Castor, trying marshalling and unmarshalling test programs, am
getting following exception on Unmarshall. I google but this time no luck so
thought of logging it here.
Below is the mapping, XML, and java code to unmarshall.
Exception
------------------------------------------------------------------------------------------------------
unable to find FieldDescriptor for 'ClientData' in ClassDescriptor of
Envelope{file: [not available]; line: 4; column: 22}
------------------------------------------------------------------------------------------------------
Here is the XML that I am trying to unmarshall
response.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Std>XYZ</soapenv:Std>
<soapenv:ClientData>
<Name>Jean Smith</Name>
<Address>2000, Alameda de las Pulgas, San Mateo, CA
94403</Address>
</soapenv:ClientData>
</soapenv:Envelope>
Please note that if I remove the namespace prefix i.e. 'soapenv' from the
tag <soapenv:ClientData> making it just <ClientData> in the above
response.xml, it unmarshalls with no issues however requirement is to
unmarshall with namespace prefix i.e.<soapenv:ClientData>.
The <map-to ns-uri="http://schemas.xmlsoap.org/soap/envelope/"
ns-prefix="soapenv" /> works well in marshalling but not working in
unmarshalling, please see the mapping file below
Mapping File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.org/mapping.dtd">
<mapping>
<class name="com.xyz.transfer.dto.response.TransferResponseDTO">
<map-to xml="Envelope"
ns-uri="http://schemas.xmlsoap.org/soap/envelope/"
ns-prefix="soapenv"/>
<field name="ss" type="java.lang.String">
<bind-xml name="Std" node="element" />
</field>
<field name="cd" type="com.xyz.common.ism.response.ClientData">
<bind-xml name="ClientData" node="element"/>
</field>
</class>
<class name="com.xyz.common.ism.response.ClientData">
<map-to ns-uri="http://schemas.xmlsoap.org/soap/envelope/"
ns-prefix="soapenv" />
<field name="Name" type="java.lang.String">
<bind-xml name="Name" node="element"/>
</field>
<field name="Address" type="java.lang.String">
<bind-xml name="Address" node="element"/>
</field>
</class>
</mapping>
Java Code
public static void main(String args[]) {
Mapping mapping = new Mapping();
try {
// 1. Load the mapping information from the file
mapping.loadMapping("resources\\transfer_resp_mapping.xml" );
// 2. Unmarshal the data
Unmarshaller unmar = new Unmarshaller
(mapping);
TransferResponseDTO dto =
(TransferResponseDTO)
unmar.unmarshal(new InputSource(new
FileReader("resources\\response.xml")));
System.out.println(dto.getSs());
} catch (Exception e) {
System.out.println(e);
return;
}
}
}
Any help would be much appriciated.
Thanks in Advance.
Regards,
Waez.
--
View this message in context:
http://www.nabble.com/Unmarshalling-issue-with-namespace-prefix-tp25119826p25119826.html
Sent from the Castor - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email