У нас есть webapp (стандартный Spring MVC, Java) - который я написал - который возвращает ответ нашему клиенту (браузеру) как XML. Ответ сортируется с использованием JAXB и так далее.Извлечение всего содержимого узла XML с использованием Javascript
Внутри ui - для взаимодействия с сторонним программным обеспечением нам необходимо передать часть XML как есть в javascript-метод.
I.e все, начиная от '<' в третьем пакете до окончательного закрытия '>' - необходимо извлечь.
После многочисленных попыток и много отладки - я пришел к выводу, что это неправильный способ сделать это. Я считаю, что я должен обернуть эту часть ответа в CDATA и извлечь ее как .text() на то, что когда-либо было объектом ... в настоящее время мы используем jquery ... ответ возвращается на вызов AJAX ...
Но возможно это может быть сделано .. В настоящее время мы спотыкаемся о вызове .html() для элемента, который, как его XML, попадает в кучу.
TIA.
:-)
Ниже тип данных приложения структуры ответа на «нас» и «XML» для третьей части. Только (& в том числе) от «... до» - необходимо извлечь и передать как есть (текстовую строку) стороннему методу.
<xml>
<someNode>
<ourStuff veryUseful="true"/>
<thirdPartyStuff a="1" b="2">
<moreStuff/>
<evenMoreStuff/>
</thirdPartyStuff>
</someNode>
</xml>
Ниже приведено пробное испытание, в основном иллюстрирующее мое невежество. Поэтому, конечно, console.log должен завершиться неудачей.
В действительности данные возвращаются через вызов $ .ajax(), но этот тест иллюстрирует поведение. Он генерирует «Uncaught TypeError: не может вызвать метод« replace »undefined» - так как там is нет innerHtml на узле XML, который, конечно, я считаю абсолютно правильным и документирован как таковой в документах jQuery API ,
Примечание - это не работает для меня в Chrome & IE на Windows, но работает на Firefox (Mac OS) ...: - |
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
function hackit() {
var data = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" +
"<xml>" +
"<thirdParty>" +
"<blah a=\"0\" b=\"0\">" +
"</blah>" +
"</thirdParty>" +
"</xml>";
$xmlData = $.parseXML(data);
$data = $($xmlData);
var thing = $data.find("thirdParty");
console.log(thing.html());
}
</script>
</head>
<body onload="hackit()">
Loaded.
</body>
</html>
Я думаю, что в конечном итоге пойдет этот маршрут.
https://stackoverflow.com/a/14197860/366073
Java!= Javascript :) –
Что еще более важно, XML! = HTML. Было бы целесообразно использовать JS для проверки XML для необходимой информации и отображения этого, но я не знаю, что вы ожидаете от этого, вызвав .html(). Может быть, вы могли бы уточнить, что вы делаете на этом этапе? Как HTML вступает в это? – Katana314
Это не так, он хочет получить строчную форму содержимого someNode, чтобы ее можно было отправить. самый близкий метод к тому, что в jQuery, конечно, есть .html, поэтому он попытался это сделать. –