Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryxml解析_Jquery_Xml - Fatal编程技术网

jqueryxml解析

jqueryxml解析,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结果中提取某些数据

这是xml

 <?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不遵守的原因