【问题标题】:Google Map API v3 parsing xml and getting elements by tag nameGoogle Map API v3 解析 xml 并通过标签名称获取元素
【发布时间】:2023-04-03 14:15:01
【问题描述】:

我在解析要在谷歌地图中作为标记覆盖的 xml 时遇到一些问题,首先,我有一个这样的 XML 文件

<root>

&lt;weather&gt;

&lt;city&gt;city_name&lt;/city&gt;

&lt;level&gt;1&lt;/level&gt;

&lt;data&gt;weather_data&lt;/data&gt;

&lt;lat&gt;-6.211544&lt;/lat&gt;

&lt;lon&gt;106.845172&lt;/lon&gt;

<elevation>13.41</elevation>

&lt;/weather&gt;

</root>

如您所见,我在一个标签中包含了必要的数据,而不是属性,问题是,在 V2 中,我使用了 GDownloadUrl 和 GXml 解析和 getelementsbytagname 方法。在 V3 中,我似乎无法使用 GDownloadUrl,而且我在互联网上看到的所有示例都使用属性解析。有人可以帮忙吗?

【问题讨论】:

    标签: google-maps-api-3 xml-parsing


    【解决方案1】:

    查看geoxml3 的源代码(polys branchkmz branch); nodeValue 函数,这是来自 kmz 分支,polys 分支略有不同,两者都可以:

    /**
     * Extract the text value of a DOM node, with leading and trailing whitespace trimmed.
     *
     * @param {Element} node XML node/element.
     * @param {Any} delVal Default value if the node doesn't exist.
     * @return {String|Null}
     */
    geoXML3.nodeValue = function(node, defVal) {
      var retStr="";
      if (!node) {
        return (typeof defVal === 'undefined' || defVal === null) ? null : defVal;
      }
      if(node.nodeType==3||node.nodeType==4||node.nodeType==2){
         retStr+=node.nodeValue;
      }else if(node.nodeType==1||node.nodeType==9||node.nodeType==11){
        for(var i=0;i<node.childNodes.length;++i){
          retStr+=arguments.callee(node.childNodes[i]);
        }
      }
      return retStr;
    }
    

    另一个选项是 this 实现 v2 中的两个 Gxml 函数。

    【讨论】:

    • 哦,所以 GXml 没有在 v3 中实现。感谢您的帮助,我将在将 XML 重组为 v3 友好形式时尝试此方法。
    • 我不确定“v3 友好形式”是什么意思。 v3 本身不支持任何 xml 解析,这必须在您的代码或外部库中完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多