2010-12-15 157 views
1

Je rencontre des problèmes lors de l'analyse du fichier XML suivant à l'aide de jQuery. Le fichier XML est obtenu à partir d'un service Web ASP.net. Comment puis-je ignorer le premier bloc avec toutes les informations du schéma et affiner mon jeu de résultats pour les données dont j'ai besoin plus bas.jQuery XML, problème d'analyse par fusion

<?xml version="1.0" encoding="utf-8"?> 

    // IGNORE THE FOLLOWING 

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <soap:Body> 
     <UsageResponse xmlns="http://portal.caps.compass.net.nz/portal/internet.asmx"> 
      <UsageResult> 
       <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
        <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
        <xs:complexType> 
         <xs:choice minOccurs="0" maxOccurs="unbounded"> 
          <xs:element name="Table"> 
           <xs:complexType> 
           <xs:sequence> 
            <xs:element name="startdate" type="xs:dateTime" minOccurs="0" /> 
            <xs:element name="Column1" type="xs:int" minOccurs="0" /> 
            <xs:element name="Column2" type="xs:string" minOccurs="0" /> 
            <xs:element name="Column3" type="xs:int" minOccurs="0" /> 
            ...<snip>... 
           </xs:sequence> 
           </xs:complexType> 
          </xs:element> 
         </xs:choice>    
        </xs:complextype> 
        </xs:element> 
       </xs:schema> 


       // NARROW PARSING SCOPE TO THE FOLLOWING DATA ONLY 

       <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
        <NewDataSet xmlns=""> 
        <Table diffgr:id="Table1" msdata:rowOrder="0"> 
         <startdate>2010-01-31T00:00:00+13:00</startdate> 
         <Column1>1050</Column1> 
         <Column2>Date</Column2> 
         <Column3>0</Column3> 
         <Column4>1</Column4> 
         <Column5>yyyy-Mmm-dd</Column5> 
         <starttime>2010-01-31T00:00:00+13:00</starttime> 
         <Column6>800</Column6> 
         <Column7>Time</Column7> 
         <Column8>0</Column8> 
         <Column9>1</Column9> 
         <Column10>hh:mm:ss</Column10> 
         <subscribercode>dageorgetti</subscribercode> 
        </Table> 

        ...<snip>... 

        <Table1 diffgr:id="Table11" msdata:rowOrder="0"> 
         <TotalCalls>0</TotalCalls> 
         <TotalDuration>2677129</TotalDuration> 
         <TotalCharge>0.0000</TotalCharge> 
         <TotalData>1368.9900</TotalData> 
        </Table1> 
        </NewDataSet> 
       </diffgr:diffgram> 

      </UsageResult> 
     </UsageResponse> 
     </soap:Body> 
    </soap:Envelope> 

Sans utiliser jQuery, je pouvais limiter mon résultat en utilisant quelque chose comme le script coldfusion suivant, grâce à l'aide d'un autre expert ici:

dataContainer = rspContainer.xmlChildren[2].xmlChildren[1].xmlChildren; 

Ensuite, je pouvais travailler avec le Sous-ensemble dataContainer. Mais, comment puis-je faire quelque chose de similaire dans jQuery?

+0

Montrez-nous le code jQuery que vous avez maintenant. –

+0

Quelque chose comme 'var newXML = $ (rspContainer) .filter ('[id = NewDataSet]'). Remove()'? – Fred

Répondre