在通知工作灯适配器 - 我调用适配器从后端服务通过一个很长的XML字符串。
后端服务不能被改变或变更。
我希望能够把JavaScript字符串对象到的东西,我可以解析和使用上,如有用的功能:
var custNum = doc.getElementsByTagName("data:custNum")[0];
但是,所有努力迄今创造的“文档”变量都失败了。 标准的DOMParser和窗口方法是在适配器不确定和超出范围。 我宁愿不诉诸长度的字符串分割找到我的节点!
非常感谢
在通知工作灯适配器 - 我调用适配器从后端服务通过一个很长的XML字符串。
后端服务不能被改变或变更。
我希望能够把JavaScript字符串对象到的东西,我可以解析和使用上,如有用的功能:
var custNum = doc.getElementsByTagName("data:custNum")[0];
但是,所有努力迄今创造的“文档”变量都失败了。 标准的DOMParser和窗口方法是在适配器不确定和超出范围。 我宁愿不诉诸长度的字符串分割找到我的节点!
非常感谢
设置returnedContentType: “XML”。 这将迫使WL平台自动为您解析XML并将其转换成JSON你可以操纵。
如
<a>
<b>
c
</b>
</a>
将被转换为
{"a":
{"b":"c"}
}
这样你就可以得到价值与像response.ab语法
您应该使用XSL转换过滤摆脱从XML所有不需要的数据。
这样的事情应该是你的适配器的JavaScript函数:
function getFeedsFiltered() {
var input = {
method : 'get',
returnedContentType : 'xml',
path : "rss.xml",
transformation : {
type : 'xslFile',
xslFile : 'filtered.xsl'
}
};
return WL.Server.invokeHttp(input);
}
而这样的事情应该是你的XSL文件
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:h="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/" >
<xsl:output method="text"/>
<xsl:template match="/">
{
'Items': [
<xsl:for-each select="//item">
{
'title': '<xsl:value-of select="title"/>',
'creator': '<xsl:value-of select="dc:creator"/>',
'link': '<xsl:value-of select="link"/>',
'pubDate': '<xsl:value-of select="pubDate"/>'
},
</xsl:for-each>
]
}
</xsl:template>
</xsl:stylesheet>
请检查开始使用IBM工作灯 ( http://www.ibm.com/developerworks/mobile/worklight/getting-started.html ) 模块5.2 -创建HTTP适配器 ( ftp://public.dhe.ibm.com/software /mobile-solutions/worklight/docs/v505/Module_05_2_-_Creating_HTTP_Adapters.pdf )及其运动和代码示例 ( ftp://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v505/module_05_2_HTTP_Adapter。 ZIP )。
最后,我写了一个函数是这样的:
function findNode(node,string){
var nodeEnd = node.slice(0, 1) + "/" + node.slice(1);
var chunk = string.split(node)[1];
var chunk2 = chunk.split(nodeEnd)[0];
return chunk2;
}
我使用 - 简单好用。