如何将此 XML 转换为 KML?
Posted
技术标签:
【中文标题】如何将此 XML 转换为 KML?【英文标题】:How do I convert this XML to 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>
【问题讨论】:
【参考方案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。以上是关于如何将此 XML 转换为 KML?的主要内容,如果未能解决你的问题,请参考以下文章
ArcGIS微课1000例0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
利用Global Mapper实现kml转换dwg文件。投影如何设置,请教。