我正在尝试在C#中读取KML文件。我需要阅读这些信息以获取信息并对其进行处理。是否有一个库可以读取KML,从而在数据结构中回放信息?如果没有,你如何阅读KML文件?是否像读取XML文件一样?
答案 0 :(得分:3)
我找到了解决方案。问题是新的xsd文件有多个命名空间,所以要使用XSD.exe转换为类,我还需要两个文件:atom-author-link.xsd
和xal.xsd
之后我在这个命令行中使用了XSD.exe:xsd.exe /c ogckml22.xsd atom-author-link.xsd xal.xsd
最后,我有来自xsd文件的类。
其他信息:
我刚刚找到这个库(http://sharpkml.codeplex.com/)来读取/写入kml 2.2文件。这是libkml的更新
答案 1 :(得分:2)
这是我解析KML文件以获取对象坐标的方法:
string elementToFind = "example";
System.IO.Stream kmlFile = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("objects.kml");
Xml.Linq.XDocument xDoc = System.Xml.Linq.XDocument.Load(kmlFile);
string xNs = "{" + xDoc.Root.Name.Namespace.ToString() + "}";
var coordsStr =
(from f in xDoc.Descendants(xNs + "Placemark")
where elementToFind.Contains(f.Parent.Element(xNs + "name").Value + f.Element(xNs + "name").Value)
select f.Element(xNs + "LineString").Element(xNs + "coordinates")).FirstOrDefault();
将其解析为常规XML文件,搜索您需要的数据。我希望这对你有所帮助。
答案 2 :(得分:0)
Google提供的XSD文件包含KML文件的架构,您可以在下面的位置找到它。
http://code.google.com/apis/kml/schema/kml22gx.xsd
以下是KML格式的文档:
http://code.google.com/apis/kml/documentation/kmlreference.html
您可以使用Microsoft XSD工具从架构生成类:
http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx