Я застрял на некотором LINQ to XML-коде () - PullRequest
0 голосов
/ 01 декабря 2011

Я застрял на каком-то LINQ to XML-коде.В цикле for вызывается метод, который успешно возвращает содержимое тега <placemark>, содержащего правильный идентификатор <placemark> из файла kml, который имеет общее количество 4000+ <placemark>.Я говорю успешно с одной оговоркой.Тег <description> содержит <![CDATA[ ]]>, что .net переводит в <![CDATA[ ]] &gt;.В любом случае я не могу понять, будет ли это проанализировано, чтобы сохранить все символы (>).Вот соответствующий код 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 ]]&gt;</description><point><coordinates>
                         -73.99337100000002,40.750354
                    </coordinates></point></placemark>

обратите внимание на ]]&gt; после Америки.

1 Ответ

0 голосов
/ 01 декабря 2011

Когда я запускаю ваш метод getInfo, похоже, что plMark.ToString (...) возвращает правильный текст, поэтому я буду исследовать quKML, я могу что-то упустить, но я не вижу, какой тип данных есть

Кроме того, если предполагается, что quKML должен быть основан на XML, я бы подумал об изменении вашего <br> на самозакрывающийся тег <br/>.

Надеюсь, это поможет.

...