2010-12-15 5 views
1

jQuery를 사용하여 다음 XML을 구문 분석하는 데 문제가 있습니다. xml은 ASP.net 웹 서비스에서 가져옵니다. 모든 스키마 정보가있는 첫 번째 블록을 무시하고 내 결과 집합을 내가 필요한 추가 데이터로 좁히는 방법jQuery XML, coldfusion 구문 분석 문제

<?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> 

jQuery를 사용하지 않고, 내가 여기에 또 다른 전문가에 의해 약간의 도움에 감사를 다음의 ColdFusion 스크립트 같은 것을 사용하여 내 결과 집합의 범위를 좁힐 수 : 다음

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

, 난 그냥 함께 일할 수 dataContainer 부분 집합. 그러나 jQuery에서 비슷한 작업을 수행하려면 어떻게해야합니까?

+0

지금 jQuery 코드를 보여주십시오. –

+0

'var newXML = $ (rspContainer) .filter ('[id = NewDataSet]')와 같은 것. remove()'? – Fred

답변

1

E4X 지원이 이륙하지 않은 것은 수치입니다 (Support is limited in Firefox, and basically missing everywhere else). 이 모든 곳에서 일하면

, 당신은 다만 수 : 그 대신에

var returnedData = evaluate("some xml string"); 
var iCareAbout = returnedData.Envelope.Body.UsageResponse.UsageResult.diffgram; 

는, jQuery를 당신을 위해 XML을 구문 분석 : 여기

var parsedXml = $(xmlString).find("diffgram"); 

좋은 tutorial on parsing XML with jQuery이다.