我正在使用脚本调解器将XML响应转换为JSON。如果XML格式正确,则介体可以正常工作,但如果XML具有自闭标记,则会失败..
非常感谢任何解决此问题的想法。
<!-- XML data-->
<getMyClsScheduleResponse >
<RegisteredClass>
<ClassNumber>10757</ClassNumber>
<SubjectCode>AAS</SubjectCode>
<CatalogNumber>510</CatalogNumber>
<SectionNumber>001</SectionNumber>
<SectionType>IND</SectionType>
<SectionTypeDescr>Independent Study</SectionTypeDescr>
<SessionDescr>Regular</SessionDescr>
<CourseDescr>Supervised Research</CourseDescr>
<ClassTopic />
<CreditHours>1 - 6</CreditHours>
<LMSURL /> <!-- Self Closing tag -->
<Meeting>
<MeetingNumber>1</MeetingNumber>
<Days />
<Times />
<StartDate>09/02/2014</StartDate>
<EndDate>12/10/2014</EndDate>
<Location>TBA</Location>
<TopicDescr />
</Meeting>
/** Script Mediator */
function transformPayload(output) {
payload = output.getPayloadJSON();
results = payload.getMyClsScheduleResponse.RegisteredClasses;
var response = new Array();
var registeredClass = new Array();
for (i=0;i<results.length; i++ ) {
class_schedule = results[i];
newcls = new Object();
newcls.Link = class_schedule.LMSURL; // Error at this line..
}
}
错误日志:
TID: [0] [ESB] [2014-10-24 14:19:45,541] ERROR - The script engine returned an error executing the external js script : Value {name ='null', keyValue ='conf:/repository/esb/js/functions.js'} function transformPayload {org.apache.synapse.mediators.bsf.ScriptMediator}
com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.WrappedException: Wrapped com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.EvaluatorException: syntax error (<Unknown source>#1) in <Unknown source> at line number 1 (<Unknown source>#53) in <Unknown source> at line number 53
at com.sun.phobos.script.javascript.RhinoScriptEngine.invokeMethod(RhinoScriptEngine.java:259)
由于 Kranthi
答案 0 :(得分:0)
为什么使用脚本调解器将XML更改为JSON?你要做的是,正确设置内容类型以获得所需的格式响应。
答案 1 :(得分:0)
根据给定的场景,自闭项标签会出现问题(正如你所描述的那样)。在自闭标签的情况下,它返回值为null。解决方法是检查js介体和句柄中的值自闭标签时的空值。
您可以使用以下js函数在js介体中的此类场景中设置值。
function assignValuesWithNull(value){
var returnValue;
if(!value){
returnValue='';
}
else{
returnValue=value;
}
return returnValue;
}