如何在XML中测试子节点的存在?

Evi*_*mes 2 xml coldfusion

我正在使用ColdFusion 8.我是XML的新手.

我试图解析一些XML.在大多数情况下,我正在循环响应并获取我需要的信息.

当我遍历ResponseNodes数组并且我尝试访问CustomFields(如果有的话)时出现问题.CustomFields仅适用于某些记录,而非全部记录.

for (i = 1; i lte arrayLen(ResponseNodes); i++) {
    CustomFields = xmlParse(ResponseNodes[i].CustomFields.Field);
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Element CUSTOMFIELDS.FIELD is undefined in a Java 
object of type class coldfusion.xml.XmlNodeMap referenced as '' 
Run Code Online (Sandbox Code Playgroud)

我看到前两个数组元素处理得很好,因为它们有CustomFields.崩溃发生在第三个元素上,它没有CustomeFields节点.

如何测试CustomFields?

Bus*_*hes 5

在使用StructKeyExists()解析XML之前,您可以测试它的存在

for (i = 1; i lte arrayLen(ResponseNodes); i++) {
    if ( StructKeyExists( ResponseNodes[i], "CustomFields" ) {
        CustomFields = xmlParse(ResponseNodes[i].CustomFields.Field);
    }
}
Run Code Online (Sandbox Code Playgroud)