Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
dojo查询返回XML中的georss:point值_Xml_Dojo - Fatal编程技术网

dojo查询返回XML中的georss:point值

dojo查询返回XML中的georss:point值,xml,dojo,Xml,Dojo,我有如下xml: <item> <title>HOUSE FIRE (NO INJURIES) - MONASH</title> <link>http://esa.act.gov.au/feeds/currentincidents.xml</link> <description> Incident: HOUSE FIRE (NO INJURIES) </description> <guid>00678

我有如下xml:

<item>
<title>HOUSE FIRE (NO INJURIES) - MONASH</title>
<link>http://esa.act.gov.au/feeds/currentincidents.xml</link>
<description>
Incident: HOUSE FIRE (NO INJURIES)
</description>
<guid>006782-03022013</guid>
<pubDate>04 Feb 2013 15:43:56 EST</pubDate>
<georss:point>-35.4165878527591 149.095271972785</georss:point>
</item>

房屋火灾(无人员伤亡)-莫纳什
http://esa.act.gov.au/feeds/currentincidents.xml
事件:房屋火灾(无人员受伤)
006782-03022013
2013年2月4日美国东部时间15:43:56
-35.4165878527591 149.095271972785

什么是DOM对象上的dojo.query以返回georss:point元素的lat和long值?

我记得几个月前有过类似的问题,所以我想尝试一下。问题在于XML名称空间元素(),查找其他元素很简单

根据,可以使用|符号选择带名称空间的元素。因此,georss|point应该是正确的选择器。但是,您需要事先向选择器引擎声明此命名空间。我不知道该怎么做

解决方法是使用*表示任何名称空间;因此,*|点将起作用。但是,它将在文档中找到任何名称空间的任何点元素。在大多数情况下,这不会是一个问题

例如


要求([
“dojo/query”,
“dojo/request”,
“dojo/dom属性”
],函数($,请求,domAttr){
请求(“test.xml”{
“预防缓存”:对,
“handleAs”:“xml”
}).then(函数(xmldom){
var georss=$(“*|点”,xmldom.documentElement);
如果(georss.length>0){//请确保我们有我们的元素
log(“georss:point”,georss[0]);//测试代码
var latLng=domAttr.get(georss[0],“innerHTML”).split(“”);
}
},函数(err){
控制台错误(err);
});
});
如果获取所有名称空间会导致问题,那么您可以根据节点的名称空间URI属性筛选节点

可能有人知道如何将名称空间传递给dojo/query,这会使它变得更好。如果Dojo还没有包含它,那么它应该是选择器引擎的一个特性


编辑:在Chrome、Firefox或Opera中,您似乎都不需要*|点,点就足够了。但是,这在InternetExplorer中不起作用(我已经在IE8中进行了测试,不确定更高版本)。在IE中,名称空间选择器是必需的。

编辑了我的答案,以包含关于不同浏览器规则的注释。读了你的评论后,我决定重新测试我的代码,发现你是对的!我当时有点困惑,为什么我最初会走这条路。看来Internet Explorer又是个怪人了。我没有访问IE9/IE10的权限,这可能是因为这些功能与其他功能相同。
<script type="text/javascript">
    require([
        "dojo/query",
        "dojo/request",
        "dojo/dom-attr"
    ], function($, request, domAttr){
        request("test.xml", {
            "preventCache": true,
            "handleAs": "xml"
        }).then(function(xmldom){
            var georss = $("*|point", xmldom.documentElement);
            if(georss.length > 0){ // ensure we have our element
                console.log("georss:point", georss[0]); // Test code
                var latLng = domAttr.get(georss[0], "innerHTML").split(" ");
            }

        }, function(err){
            console.error(err);
        });
    });
</script>