Допустим, я только что проанализировал чужой XML-документ, который является ответом на запрос API.Я хочу знать, существует ли значение, вложенное глубоко внутрь.Если мой запрос API сработал, он будет каждый раз в одном и том же месте.Если мой запрос API терпит неудачу, корень XML очень отличается.
Если я попытаюсь <cfif structKeyExists(myStruct.level1.level2.level3, 'myTarget')>
при неудачном запросе API, я получу фатальную ошибку: Element LEVEL1.LEVEL2 is undefined in MYSTRUCT
.
OfКонечно, я мог бы попытаться зависеть от корневого уровня XML, говорящего мне об успехе или неудаче, и не искать результат, если он потерпел неудачу, но ... за исключением этого решения, что мне делать?
Нужно ли проверять наличие каждого уровня структуры?Как в:
<cfif structKeyExists(myStruct, 'level1')
and structKeyExists(myStruct.level1, 'level2')
and structKeyExists(myStruct.level1.level2, 'level3')
and structKeyExists(myStruct.level1.level2.level3, 'myTarget')>
<!--- ... --->
</cfif>
Это не проблема реального мира, это просто то, с чем я сталкивался слишком много раз.Пожалуйста, не говорите мне о решениях, которые включают изменение API или решений, подобных тем, что описаны в третьем абзаце.
Спасибо!
edit: я должен был упомянуть, почему я не могу использовать isDefined ()- некоторые ключи не имеют синтаксически допустимых имен, поэтому isDefined () выдает ошибку, например myStruct.level1 [42] .level3