我无法使用jQuery解析以下xml。 xml是从ASP.net Web服务获得的。如何忽略包含所有架构信息的第一个块,并将结果集缩小到我需要的数据范围。
<?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 :(得分: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");