我正在尝试在 C# 中动态创建 KML 文件。我写了一个递归函数来做到这一点。但是输出的结果有点问题。问题是所有地标的结束标记的位置。我真的很困惑。请告诉我递归函数在哪里出错???
我的代码:
private void xmlBuild()
{
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", ""),
new XComment("This is comment by me"),
new XElement(ns+"kml",
new XElement(ns+"Document", rec_build())));
doc.Save(Server.MapPath(@"~\App_Data\markers2.xml"));
}
private XElement rec_build()
{
if (iteration != 0)
{
iteration -= 1;
return final_rec = new XElement(ns + "Placemark",
new XAttribute("id", "1"),
new XElement(ns + "title", "something"),
new XElement(ns + "description", "something"),
new XElement(ns + "LookAt",
new XElement(ns + "Longitude", "49.69"),
new XElement(ns + "Latitude", "32.345")), new XElement(ns + "Point", new XElement(ns + "coordinates", "49.69,32.345,0")),rec_build());
}
else
{
return null;
}
}
这是迭代值 2 的输出:(请注意文件末尾的地标 id=1 的结束标记。它应该在地标 id=2 的开始标记之前!
<?xml version="1.0" encoding="utf-8"?>
<!--This is comment by me-->
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark id="1">
<title>something</title>
<description>something</description>
<LookAt>
<Longitude>49.69</Longitude>
<Latitude>32.345</Latitude>
</LookAt>
<Point>
<coordinates>49.69,32.345,0</coordinates>
</Point>
<Placemark id="1">
<title>something</title>
<description>something</description>
<LookAt>
<Longitude>49.69</Longitude>
<Latitude>32.345</Latitude>
</LookAt>
<Point>
<coordinates>49.69,32.345,0</coordinates>
</Point>
</Placemark>
</Placemark>
</Document>
</kml>