Я застрял на каком-то LINQ to XML-коде.В цикле for вызывается метод, который успешно возвращает содержимое тега <placemark>
, содержащего правильный идентификатор <placemark>
из файла kml, который имеет общее количество 4000+ <placemark>
.Я говорю успешно с одной оговоркой.Тег <description>
содержит <![CDATA[ ]]>
, что .net переводит в <![CDATA[ ]] >
.В любом случае я не могу понять, будет ли это проанализировано, чтобы сохранить все символы (>
).Вот соответствующий код c #:
… в основном классе
public partial class ResultsGeneral : BasePage {
public List<string> rightVenues = new List<string>();
XNamespace spc = "http://www.opengis.net/kml/2.2";
XDocument Placemarks = XDocument.Load(HttpContext.Current.Server.MapPath("~/venuesCompleteGood.kml"));
… в protected void Page_Load(object sender, EventArgs e) {
for (int q = 0; q <= rightVenues.Count; q++) {
getInfo(rightVenues[q]); //get info contains a list of placemark ids
};
…
public void getInfo(string ids) {
var aPlacemark =
from plMark in Placemarks.Descendants(spc + "Placemark")
where plMark.Attribute("id").Value.Equals(ids.ToString())
select plMark;
foreach (XElement plMark in aPlacemark) {
quKML.Text = quKML.Text + "<br>" +
plMark.ToString(SaveOptions.DisableFormatting);
}
}
… Фрагмент kml:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark id="33">
<name>
Madison Square Garden
</name>
<description>
<![CDATA[<br>
4 Penn Plaza<br>
<br>
New York<br>
NY<br>
10001<br>
United States of America ]]>
</description>
<Point>
<coordinates>
-73.99337100000002,40.750354
</coordinates>
</Point>
</Placemark>
… часть того, что возвращается:
<placemark id="33" xmlns="http://www.opengis.net/kml/2.2"><name>
Madison Square Garden
</name><description><!--[CDATA[<br-->
4 Penn Plaza<br>
<br>
New York<br>
NY<br>
10001<br>
United States of America ]]></description><point><coordinates>
-73.99337100000002,40.750354
</coordinates></point></placemark>
обратите внимание на ]]>
после Америки.