Как проверить наличие дочернего узла в XML? - PullRequest
2 голосов
/ 14 марта 2012

Я использую 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 Ответ

5 голосов
/ 15 марта 2012

Вы можете проверить его существование перед анализом XML с помощью StructKeyExists ()

for (i = 1; i lte arrayLen(ResponseNodes); i++) {
    if ( StructKeyExists( ResponseNodes[i], "CustomFields" ) {
        CustomFields = xmlParse(ResponseNodes[i].CustomFields.Field);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...