从xml响应中提取对象数组到js

时间:2014-08-27 17:59:25

标签: apigee

所以我从我的xml响应中提取变量并尝试重新格式化对象,但我想以最有效的方式做到这一点。所以我想将相同对象的xml数组加载到js数组中,我可以循环并输出新格式。我在提取XPath时找到了对type =“nodeset”的引用,但我在文档中找不到对它的引用。

将完整的xml对象加载到js变量并循环访问对象并输出新格式的最佳方法是什么

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:0)

实现这一目标的最佳方法是使用XMLToJSON策略,一个JavaScript调用,您可以在其中调解您的有效负载,然后在需要时使用JSONToXML进行转换。

答案 1 :(得分:0)

对于不需要过滤的XML数组,您可以将XPATH与type="nodeset"一起使用,就像您所描述的那样。这允许您拉取特定XPATH中的节点和所有子节点。我确定你注意到了,你只能通过提取type="string"来做到这一点。只需知道您需要将提取的变量转换为字符串,然后才能像使用其他字符串一样使用XML节点。然后,您可以执行JSON.parse来获取字符串并像数组一样操纵对象。字符串转换就像使用以下代码调用JS callout一样简单(如果其他人有更好的方法,我全都耳朵):

var extractedNodeSet = context.getVariable("extractedNodeSet");
var extractedNodeSetString = String(extractedNodeSet);

对于需要过滤/操作的XML数组,我建议使用XSLT和受信任的<xsl:for-each select=...>元素。这将让您在一个步骤中设置XML阵列节点的条件,操纵标签/数据,并提取数据。唯一的问题是这不是一个JS数组,所以如果你绝对必须有一个JS数组,那么你需要做一个XMLtoJSON并使用那里的数据。