1
A
回答
3
GatewayScript不支持任何XML
IBM信息中心不會對如何訪問XML數據信息
請提供Dom在ECMA(Node.js)中實現。 但是我使用了模塊XPATH和DOM,並取得了巨大的成功。 下載XMLDOM(https://github.com/jindw/xmldom)和XPath(https://github.com/goto100/xpath)Node.js加載模塊及以下腳本添加到您的DP目錄:
- DOM-parser.js
- dom.js
- sax.js
- xpath.js
要在DataPower的GWS使用它,你首先需要從INPUT獲得XML數據:
// 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模塊。
希望你會得到它飛!
1
至少7.0.0固件版本Gatewayscript能夠輕鬆地使用XPATH和DOM。從DP商店中摘錄的內容:
//reading body from the rule input
session.input.readAsXML(function (error, nodeList) {
if (error) {
//error behaviour
} else {
var domTree;
try {
domTree = XML.parse(nodeList);
} catch (error) {
//error behaviour
}
var transform = require('transform'); //native gatewayscript module
transform.xpath('/someNode/anotherNode/text()', domTree, function(error, result){
if(error){
//error behaviour
}
//some use of result, for example putting it to output
session.output.write(result);
}
});
});
相關問題
- 1. JScript.NET vs ECMA
- 2. IBM Websphere Datapower Xi52
- 3. DataPower多部署
- 4. 錯誤使用DataPower
- 5. ECMA-262 ReturnIfAbrupt
- 6. Datapower身份驗證
- 7. ECMA-262 7.0 GetValue(V)
- 8. CRC ECMA-182參考
- 9. ECMA-262和ECMA-357之間是否有語法差異?
- 10. DataPower中的處理規則
- 11. datapower無法安裝在docker
- 12. dW:IBM Datapower網關腳本
- 13. 的WSSecurity IBM DataPower的問題
- 14. Datapower WTX輸出問題
- 15. SOMA司令部的DataPower
- 16. Jint數組函數ECMA 5.1
- 17. Ecma 6承諾完成
- 18. WPF是ECMA標準庫嗎?
- 19. 如何使用ECMA腳本
- 20. Promise()的ECMA 6語法
- 21. Ecma-334對下一行(C#ECMA標準)有錯誤的描述嗎?
- 22. 如何在CQ組件中包含一個ecma到另一個ecma中?
- 23. Ecma錯誤:TypeError:無法調用屬性
- 24. 什麼是Javascript/ECMA中的snarf?
- 25. Datapower設備XI52是否支持ActiveMQ?
- 26. DataPower的SSH登錄用戶名忽略
- 27. DataPower - Azure服務總線集成
- 28. 來自請求的Datapower Soap Envelope Header值
- 29. DataPower文件傳輸返回base64
- 30. 如何停止datapower中的特定域?
正確,從7.0開始,就有了transform()模塊。然而,我有一些問題,它會拋出錯誤,如果XPath沒有找到,我有一些困難與XML屬性使用它,所以我現在堅持使用XPath模塊... – Anders 2017-07-16 06:31:18