Я использую плагин XJC Maven с привязкой XMLBeans для генерации кода из WSDL + XSD.Код развернут на Glassfish 2.1.1, работающем на JDK 1.6
Я пытаюсь проанализировать строку XML, используя сгенерированные объекты.Синтаксический анализ объекта возможен без ошибок, но когда я вызываю методы getXXX () для объекта, все они равны нулю.
Я искал и искал некоторые подсказки о том, как это исправить, но безрезультатно.
Любая помощь будет оценена.
Анализируемый XML:
<ccs:printAdReturn xmlns:ccs="http://www.huntingtonmast.com/ccssAdInfo">
<ccs:adPrice>244.0</ccs:adPrice>
<ccs:sap-order-request>
<sap-order-request xmlns="http://huntmast/pas">
<business-partner xmlns="">2010011755</business-partner>
<source-system xmlns="">05</source-system>
<authorizer-name xmlns="">Unknown user</authorizer-name>
<item-ad xmlns="">
<booking-unit>JOBSFRZ</booking-unit>
<content-component>905</content-component>
<promo-code />
<price-group>JB</price-group>
<non-package>
<ad-schedule>
<publication-date>2009-09-26-04:00</publication-date>
<basic-booking-unit>JOBSFRZ</basic-booking-unit>
</ad-schedule>
<ad-schedule>
<publication-date>2009-09-27-04:00</publication-date>
<basic-booking-unit>JOBSFRZ</basic-booking-unit>
</ad-schedule>
</non-package>
<ad-content>
<template-id>CCSS_JOBS3_B</template-id>
<proof-required>false</proof-required>
<panel-field>
<field-name>JOB-TITLE</field-name>
<field-value>
<![CDATA[TECHS NEEDED!]]>
</field-value>
</panel-field>
<panel-field>
<field-name>KEYWORD</field-name>
<field-value>
<![CDATA[HVAC]]>
</field-value>
</panel-field>
<panel-field>
<field-name>CCSS-SIG2</field-name>
<field-value />
</panel-field>
<panel-field>
<field-name>J-FONT1</field-name>
<field-value>
<![CDATA[08]]>
</field-value>
</panel-field>
<panel-field>
<field-name>CCSS-SIG1</field-name>
<field-value />
</panel-field>
<panel-field>
<field-name>CCSS-ADTEXT1</field-name>
<field-value>
<![CDATA[Hello World, How are you ?]]>
</field-value>
</panel-field>
</ad-content>
</item-ad>
</sap-order-request>
</ccs:sap-order-request>
<ccs:numberLines>8</ccs:numberLines>
</ccs:printAdReturn>
Код Java для синтаксического анализа
oPrintResponse.setStatus(SUCCESS_CODE);
oPrintResponse.setStatusMessage(STATUS_SUCCESS);
XmlOptions validateOptions = new XmlOptions();
validateOptions.setCharacterEncoding("utf-8");
validateOptions.setValidateOnSet();
ArrayList errorList = new ArrayList();
validateOptions.setErrorListener(errorList);
PrintAdReturnDocument oAdReturnDocument = PrintAdReturnDocument.Factory.parse(pXml,validateOptions);
oPrintResponse.setStatus(SUCCESS_CODE);
oPrintResponse.setStatusMessage(STATUS_SUCCESS);
XmlOptions validateOptions = new XmlOptions();
validateOptions.setCharacterEncoding(cd.getSysAdmin(CCSS_XML_CHARACTER_ENCODING));
validateOptions.setValidateOnSet();
ArrayList errorList = new ArrayList();
validateOptions.setErrorListener(errorList);
PrintAdReturnDocument oAdReturnDocument = PrintAdReturnDocument.Factory.parse(pXml,validateOptions);
if(oPrintAdReturn == null)
{
log.warn("getPrintAdReturn - oPrintAdReturn is null");
return null;
}
CCSSPrint oCCSSPrint = new CCSSPrint();
oCCSSPrint.setPrice(oPrintAdReturn.getAdPrice());
oPrintAdReturn.getAdPrice()
всегда возвращает 0.0, а любые другие методы получения возвращают ноль.