使用XPath中的string()函数将多个节点作为字符串返回

时间:2013-12-06 15:33:51

标签: xml xpath coldfusion-10

我正在深入研究XML的精彩世界。在对XML设置进行了一些修补之后,有一件事让我感到困惑,我在尝试构建导航时注意到了这一点。我将在下面举例说明我的问题。

<cfxml variable="myXML">
    <navigation>
        <navItem>
            <name>Mens</name>
        </navItem>

        <navItem>
            <name>Womens</name>
        </navItem>
    </navigation>
</cfxml>

<cfset navList = arrayToList(xmlSearch(xmlParse(myXML),
    "string(//navItem/name/text()), "^")>

<cfloop list="#navList#" delimiter="^" index="nav">
    <cfoutput>
        #nav#
    </cfoutput>
</cfloop>

我的目标是:

Mens
Womens

这可能现在开始对某些人有意义了。我正在尝试将名称值作为XML树中的 EACH <navItem>字符串返回。当然,我被抛出的错误确实有意义,但是现在我仍然坚持如何将多个节点值作为字符串返回。

我收到的错误说明:

Unable to process the result of the XMLSearch for A sequence
of more than one item is not allowed as the first argument
of string() (text("Mens"), text("Womens")).

其次是:

ColdFusion is unable to process the result of the XPath search.
You may have an undefined variable in the xpath expression.

任何人都可以沿着正确的线路指向我吗?

1 个答案:

答案 0 :(得分:1)

我会尝试

<cfset navList = arrayToList(xmlSearch(xmlParse(myXML), "//navItem/name"), "^")>

如果那不起作用,那么

<cfset navList = arrayToList(xmlSearch(xmlParse(myXML), "//navItem/name/string()"), "^")>