Проверьте XML на наличие определенного ключа - PullRequest
0 голосов
/ 09 сентября 2018

В следующем XML-коде я хочу увидеть, есть ли элемент, называемый «ошибки»

<cfxml variable="sXML">
<?xml version="1.0" encoding="UTF-8"?>
<createTransactionResponse>
   <messages>
      <message>
         <text>
            <XmlText>The transaction was unsuccessful.</XmlText>
         </text>
       </message>
     </messages>
   <transactionResponse>
     <errors>
       <error>
         <errorText>
           <XmlText>The credit card number is invalid.</XmlText>
         </errorText>
       </error>
     </errors>
   </transactionResponse>
 </createTransactionResponse>
</cfxml>

Чтобы увидеть, присутствует ли узел "ошибки", я использовал:

<cfif structKeyExists(sXML, "errors")>

Но он возвращается false (Если транзакция прошла успешно, у XML нет узла "ошибки"). Что я делаю не так или есть лучший способ?

1 Ответ

0 голосов
/ 10 сентября 2018

Если вы выгружаете структуру xml с <cfdump var="#sXML#">, это показывает, что «ошибки» - это дочерний узел, на несколько уровней ниже:

Dump of sXML nodes

Вы можете ссылаться на него через родительские структуры. Предполагая, что xml всегда содержит родительские узлы "createTransactionResponse" и "actionResponse ", используйте:

<cfif structKeyExists(sXML.createTransactionResponse.transactionResponse, "errors")>
    Found
<cfelse>
    Not Found
</cfif>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...