【问题标题】:How do I convert this XML to KML?如何将此 XML 转换为 KML?
【发布时间】:2011-02-23 08:07:46
【问题描述】:

我对此有点陌生,但我需要将以下 XML 转换为 KML 格式,以便将其输入 Google 地图。有人可以帮忙吗?

<messageList>
<totalCount>1</totalCount>
−
<message>
<esn>0-7396996</esn>
<esnName>JOHN</esnName>
<messageType>TEST</messageType>
<messageDetail> ALL IS WELL AT CURRENT LOCATION.</messageDetail>
<timestamp>2010-05-24T00:39:12.000Z</timestamp>
<timeInGMTSecond>1274661552</timeInGMTSecond>
<latitude>25.19483</latitude>
<longitude>65.7162</longitude>
</message>
</messageList>

【问题讨论】:

    标签: php jquery xml google-maps kml


    【解决方案1】:

    您可以应用 XSL 模板翻译器。大致如下:

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:template match="/">
        <kml xmlns="http://www.opengis.net/kml/2.2">
            <Document>
                <xsl:apply-templates select="messageList" />
            </Document>
        </kml>
    </xsl:template>
    
    <xsl:template match="messageList">
        <name>My Generated KML</name>
        <xsl:apply-templates select="message" />
    </xsl:template>
    
    <xsl:template match="message">
        <Placemark>
            <name><xsl:value-of select="esnName" /></name>
            <Point>
                <coordinates>
                    <xsl:value-of select="latitude" />,<xsl:value-of select="longitude" />
                </coordinates>
            </Point>
        </Placemark>
    </xsl:template>
    
    </xsl:stylesheet>
    

    (来自a documentation example的基本KML格式)

    KML 是一种广泛的格式,您可以添加比我这里的几个元素更多的信息。

    【讨论】:

      【解决方案2】:
              XmlDocument xmlDoc = new XmlDocument();
              XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
      
              // Create the root element
              XmlElement rootNode = xmlDoc.CreateElement("kml");
              rootNode.SetAttribute("xmlns", @"http://earth.google.com/kml/2.1");
              xmlDoc.InsertBefore(xmlDeclaration, xmlDoc.DocumentElement);
              xmlDoc.AppendChild(rootNode);
      
              // Add the Document
              XmlElement documentNode = CreateElement(xmlDoc, "Document", "Test KML File");
              rootNode.AppendChild(documentNode);
              xmlDoc.Save(outputFilePath + FileName + ".kml");
      
      
          public XmlElement CreateElement(XmlDocument xmlDoc, string elementType, string name)
          {
              XmlElement documentNode = xmlDoc.CreateElement(elementType);
              XmlElement documentNameNode = xmlDoc.CreateElement("name");
              XmlText nameText = xmlDoc.CreateTextNode(name);
              documentNode.AppendChild(documentNameNode);
              documentNameNode.AppendChild(nameText);
              return documentNode;
          }
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2023-03-11
      • 2014-04-15
      • 2013-02-17
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      相关资源
      最近更新 更多