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

时间:2012-03-14 19:57:22

标签: xml coldfusion

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

我正在尝试解析一些XML。我正在循环响应并获取我需要的信息,大部分时间。

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

for (i = 1; i lte arrayLen(ResponseNodes); i++) {
    CustomFields = xmlParse(ResponseNodes[i].CustomFields.Field);
}

这是我得到的错误:

Element CUSTOMFIELDS.FIELD is undefined in a Java 
object of type class coldfusion.xml.XmlNodeMap referenced as '' 

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

如何测试CustomFields?

1 个答案:

答案 0 :(得分:5)

您可以在使用StructKeyExists()

解析XML之前测试它的存在
for (i = 1; i lte arrayLen(ResponseNodes); i++) {
    if ( StructKeyExists( ResponseNodes[i], "CustomFields" ) {
        CustomFields = xmlParse(ResponseNodes[i].CustomFields.Field);
    }
}