jqueryxml解析
这有点厚颜无耻,我实际上要求您为我编写代码,但我很难从xml结果中提取某些数据 这是xmljqueryxml解析,jquery,xml,Jquery,Xml,这有点厚颜无耻,我实际上要求您为我编写代码,但我很难从xml结果中提取某些数据 这是xml <?xml version="1.0" encoding="UTF-8" ?> <GeocodeResponse> <status>OK</status> <result> <type>route</type> <address_component&g
<?xml version="1.0" encoding="UTF-8" ?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>route</type>
<address_component>
<long_name>xxxxxxxxxxx</long_name>
<short_name>xxxxxxxxxxx</short_name>
<type>administrative_area_level_3</type>
<type>political</type>
</address_component>
</result>
<result>
<type>postal_code</type>
<address_component>
<long_name>xxxxxxxxxxx</long_name>
<short_name>xxxxxxxxxxx</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
</result>
</GeocodeResponse>
好啊
路线
XXXXXXXXXX
XXXXXXXXXX
行政区第三级
政治的
邮政编码
XXXXXXXXXX
XXXXXXXXXX
行政区二级
政治的
如何使用jquery在结果类型route的address\u组件上获得类型为administrative\u area\u level\u 3的长\u名称?首先,jquery本身并不真正解析XML—它让浏览器来解析。它可以创建一个DOM片段,然后允许您检查它。因此,如果xml位于字符串中,则可以使用:
var xml = $(xmlString);
然后你可以这样做:
var longName = null;
xml.children('result').each(function() {
if ($(this).children('type').text() === 'route') {
var addr = $(this).find('address_component');
if (addr.find('type').filter(function() { return this.innerHTML === 'administrative_area_level_3'; }).length())
longName = addr.children('long_name').text();
}
});
或者类似的东西。这应该适合你 $(document).ready(function () { $.ajax({ type: "GET", dataType: "xml", url: "XMLFile.xml", success: function (xml) { $(xml).find('type').each(function () { // find all "type" tag in XML if ($(this).text() == 'administrative_area_level_3') { // in here $(this) is our "type" tag var result = $(this).parent().find('long_name').text(); // get result $('#result').html('The Result is: ' + result) // write result } }) } }) }) $(文档).ready(函数(){ $.ajax({ 键入:“获取”, 数据类型:“xml”, url:“XMLFile.xml”, 成功:函数(xml){ $(xml).find('type').each(函数(){//find xml中的所有“type”标记 if($(this).text()=='administrative_area_level_3'){//in here$(this)是我们的“type”标记 var result=$(this).parent().find('long_name').text();//获取结果 $('#result').html('结果为:'+result)//写入结果 } }) } }) })
活生生的例子是,最后一行应该是
的结束标记,对吗?是的,编辑了我的问题以反映它。谢谢,它在ie上运行良好,但在firefox或具有虚拟xml响应的pera上不起作用。没有错误,只是什么都没有发生。这很奇怪。我已经在Firefox上用Firebug编写并测试了这段代码。很抱歉,这个示例适用于所有浏览器。Firefox Chrome Opera IE9 IE8。我无法在Safari上进行测试,但我认为它可以在Safari上运行,因为Safari是一款类似Chrome的网络工具包浏览器,它正在Chrome上运行。请注意,它可以在本地文件上运行。奇怪的是它没有;我想我已经找到了IE不遵守的原因