Я столкнулся с проблемой при попытке разобрать строку XML, возвращенную из Ajax Call.Структура XML выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<endPointDefs>
<endPointDef>
<useCaseId>USER_LOGIN</useCaseId>
<endPointUrl>/core.authenticate.do</endPointUrl>
<endPointUrlParams>
<endPointUrlParam name="MsgFormat">
<urlParamType>SYSTEM_DEFINED</urlParamType>
<urlParamValueSystemDefined>USER_LOGIN</urlParamValueSystemDefined>
</endPointUrlParam>
<endPointUrlParam name="userId">
<urlParamType>USER_PROVIDED</urlParamType>
</endPointUrlParam>
<endPointUrlParam name="password">
<urlParamType>USER_PROVIDED</urlParamType>
</endPointUrlParam>
<endPointUrlParam name="language">
<urlParamType>USER_PROVIDED</urlParamType>
</endPointUrlParam>
</endPointUrlParams>
</endPointDef>
</endPointDefs>
Однако мне нужно значение тега для useCaseId USER_LOGIN.Типичное выражение XPATH для этого должно выглядеть следующим образом:
/endPointDefs/endPointDef[useCaseId='USER_LOGIN']/endPointUrl
Я сохранил ответ от вызова ajax в переменной javascript следующим образом:
var endPointDefs=null;
Эта переменная заполняется из AjaxВызовите следующим образом:
$.ajax(
{
type:"POST",
url: "<%=request.getContextPath()%>/data/EndPointDefs.xml",
dataType:"XML",
success:function(data){
//alert("End Points Loaded: " + data);
endPointDefs=data;
},
error: function() {
alert('an error occurred! which trying to fetch the end point definitions');
}
}
);
Я попытался выполнить запрос XPATH с помощью JQuery следующим образом:
$("endPointDefs/endPointDef[useCaseId='USER_LOGIN']/endPointUrl",endPointDefs).each(function(){
$('#txtUseCase').val('USER_LOGIN');
$('#txtEntryPointURL').val($(this).text());
})
Это измененная версия того, что было показано здесь: http://www.compoc.com/tuts/
Хотя альтернативный подход состоит в том, чтобы перебрать все элементы endPointDef и проверить значение useCaseId и, если оно совпадает с моей строкой [USER_LOGIN], установить текст в текстовом поле.Но более элегантный подход состоял бы в том, чтобы использовать выражение XPATH, указанное выше, что дало бы мне желаемые результаты за один выстрел.
Я перепробовал много комбинаций, и, похоже, ничего не работает.Поддерживает ли JQuery такого рода запросы XPath?Если да, может кто-нибудь сказать мне, где я иду не так?