2017-10-09 4 views
0

Je l'ai utilisé comme suit jusqu'à ce point pour analyser une section d'un xml qui ressemble à ceci:xml parsing avec coldfusion

<report> 
     <otherSections> 
     </otherSections> 
     ... 
     <inquiries> 
      <inquiry> 
      <date>01/01/06</date> 
      </inquiry> 
      ..more inquiries 
     </inquiries> 
     ..more sections 
    </report> 

     <cfset numInquiries = ArrayLen(Report.inquiries.XmlChildren) > 
     <cfloop index="i" from = "1" to = "#numInquiries#" > 
     <cfset strInquiryID = Report.inquiries.inquiry[i].date.XMLText/> 

     </cfloop> 

Ce que je ne savais pas est parfois le xml est comme ça :

 <report> 
      <otherSections> 
      </otherSections> 
      ... 
      <inquiries> 
       <inquiry> 
       <date>02/01/06</date> 
       </inquiry> 
       ..more inquiries 
      </inquiries> 
      <inquiries> 
       <inquiry> 
       <date>01/01/06</date> 
       </inquiry> 
       ..more inquiries 
      </inquiries> 
      ..more sections 
     </report> 

Je sais pas combien d'autres enfants seront dans le rapport ou le nombre de demandes de renseignements balises il y aura, mais je veux seulement analyser les demandes de renseignements et de leurs enfants. Comment puis-je l'analyser avec coldfusion?

+0

Qu'est-ce que vous avez exactement des problèmes avec? 'report' a n enfants que vous pouvez parcourir:' Report.XmlChildren' – Alex

+0

À droite, mais je ne veux spécifiquement que passer en revue les enquêtes sur les enfants. –

Répondre

1

Si vous êtes assuré que le premier enfant du « rapport » est toujours « otherSection », vous pouvez essayer quelque chose comme ça

<cfloop from="2" to="#arrayLen(test.report.xmlChildren)#" index="i"> 
    <cfset strInquiryID = test.report.xmlChildren[i].inquiry.date.xmlText /> 
</cfloop> 

ou

<cfloop array="#test.report.xmlChildren#" index="i"> 
    <cfif i.xmlName neq 'otherSection'> 
     <cfset strInquiryID = i.inquiry.date.xmlText /> 
    </cfif> 
</cfloop> 
+0

Désolé, je viens de jeter ça pour illustrer mon problème. Je ne saurai jamais combien d'enfants seront avant les enquêtes ou combien d'enfants ont appelé les enquêtes qu'il y aura. –

+1

Dans ce cas, vous pourriez faire quelque chose comme ceci: 'xmlSearch (yourXMLVariable," report/inquiry ")'. Cela devrait vous donner un tableau de tous les nœuds de 'demandes d'informations' que vous pouvez ensuite parcourir. – ultimoTG

+0

On dirait que ce dont j'ai besoin, je vais essayer. –