GatewayScript не поддерживает XML Dom в ECMA (Node.js). Я с успехом использовал модули XPATH и DOM. Скачать XMLDOM (https://github.com/jindw/xmldom) и Xpath (https://github.com/goto100/xpath) Node.js модули и добавьте следующие сценарии в каталог DP:
- дом-parser.js
- dom.js
- sax.js
- xpath.js
использовать его в DataPower ТРУ сначала необходимо получить данные XML из INPUT:
// This is where we start, grab the INPUT as a buffer
session.input.readAsBuffers(function(readAsBuffersError, data) {
if (readAsBuffersError) {
console.error('Error on readAsBuffers: ' + readAsBuffersError);
session.reject('Error on readAsBuffers: ' + readAsBuffersError);
} else {
if (data.slice(0,5).toString() === '<?xml') {
console.log('It is XML!');
parseXML(data);
}
} //end read as buffers error
}); //end read as buffer function
function parseXML(xml) {
// Load XML Dom and XPath modules
var select = require('local:///xpath.js');
var dom = require('local:///dom-parser.js');
var doc = new dom.DOMParser().parseFromString(xml.toString(), 'text/xml');
// Get attribute
var nodes = select(doc, "//root/element1/@protocol");
try {
var val = nodes[0].value.toString();
console.log('found xml attribute as ['+val+']');
} catch(e) {
// throw error here
}
// Get an element
nodes = select(doc, "//root/element1/child1");
try {
var val = nodes[0].firstChild.data;
console.log('elemnt found as ['+val+']');
} catch(e) {
//throw error here
}
}
Это должен быть рабочий образец ... Вам нужно изменить путь для модулей, если вы их перемещаете. У меня есть каталог в магазине: ///, где я добавляю свои модули GWS.
Надеюсь, вы получите его, чтобы летать!
Правильно, с 7.0 есть модуль transform(). У меня, однако, были некоторые проблемы с ним, и он выдает ошибку, если XPath не найден, и у меня были некоторые трудности с его использованием с атрибутами XML, поэтому я сейчас придерживаюсь модуля XPath ... – Anders