什么是工作灯适配器解析XML的方式?(What is the way to parse XML in

2019-10-17 19:24发布

在通知工作灯适配器 - 我调用适配器从后端服务通过一个很长的XML字符串。

后端服务不能被改变或变更。

我希望能够把JavaScript字符串对象到的东西,我可以解析和使用上,如有用的功能:

var custNum = doc.getElementsByTagName("data:custNum")[0];

但是,所有努力迄今创造的“文档”变量都失败了。 标准的DOMParser和窗口方法是在适配器不确定和超出范围。 我宁愿不诉诸长度的字符串分割找到我的节点!

非常感谢

Answer 1:

设置returnedContentType: “XML”。 这将迫使WL平台自动为您解析XML并将其转换成JSON你可以操纵。

<a>
  <b>
     c
  </b>
</a>

将被转换为

{"a": 
     {"b":"c"}
}

这样你就可以得到价值与像response.ab语法



Answer 2:



您应该使用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 )。



Answer 3:

最后,我写了一个函数是这样的:

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;

}

我使用 - 简单好用。



文章来源: What is the way to parse XML in a Worklight Adapter?