jQuery XML,coldfusion 解析问题
我在使用 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 中做类似的事情呢?
I am having trouble parsing the following xml using jQuery. The xml is obtained from an ASP.net webservice. How do I ignore the first block with all the schema info and narrow down my result set to the data I need further down.
<?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>
Without using jQuery, I could narrow down my result set using something like the following coldfusion script, thanks to some help by another expert here:
dataContainer = rspContainer.xmlChildren[2].xmlChildren[1].xmlChildren;
Then, I could just work with the dataContainer subset.
But, how do I do something similar in jQuery?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
遗憾的是 E4X 支持尚未普及(Firefox 中的支持有限,并且在其他地方基本上都缺失)。
如果它在任何地方都有效,那么您可以这样做:
取而代之的是,jQuery 将为您解析 XML:
这是一个很好的 使用 jQuery 解析 XML 的教程。
It's a shame that E4X support hasn't taken off (Support is limited in Firefox, and basically missing everywhere else).
If it worked everywhere, then you could just do:
In lieu of that, jQuery will parse the XML for you:
Here is a good tutorial on parsing XML with jQuery.