Вы могли установить Действие Сборки (в Окне свойств) к Ни один для файлов, которые Вы хотите исключенный. Вы могли также щелкнуть правой кнопкой по папке и выбрать Exclude from Project.
Используйте то, что вам удобнее всего, если оно выполняет свою работу. Я использую оба метода в зависимости от того, что мне нужно делать с XML. Мне кажется, вы хорошо разбираетесь в том, для чего подходит LINQ, а для чего - XPath.
Я предполагаю, что некоторые из ваших типов данных, но вы можете сделать свой запрос C # LINQ кратким, приведя значения атрибутов:
var waypoints =
from waypoint in gpxDoc.Descendants(gpx + "wpt")
select new
{
Latitude = (decimal)waypoint.Attribute("lat"),
Longitude = (decimal)waypoint.Attribute("lon"),
Elevation = (decimal?)waypoint.Element(gpx + "ele"),
Name = (string)waypoint.Element(gpx + "name"),
Dt = (DateTime?)waypoint.Element(gpx + "cmt")
};
И я уверен, что вы уже знаете синтаксис @ вы можете использовать для атрибутов в XML-литералах VB.
Да, приведенный вами пример неудобен.
Но с LINQ приходит гибкость, позволяющая избавиться от неудобств.
Вот пример того, как я мог бы его улучшить. (Это делается без какого-либо тестирования, и я даже не знаю настоящих имен классов, но он должен передать идею)
static class LinqXmlExtension
{
public static NodeThingy ElementOrNull(this XmlElement ele, string searchString)
{
return (ele.Element(searchString) != null ? ele.Element(searchString).Value : null);
}
}
//
/////////////////////////////////////////////////////////////////
var waypoints = from waypoint in gpxDoc.Descendants(gpx + "wpt")
select new
{
Latitude = waypoint.Attribute("lat").Value,
Longitude = waypoint.Attribute("lon").Value,
Elevation = waypoint.ElementOrNull(gpx + "ele"),
Name = waypoint.ElementOrNull(gpx + "name"),
Dt = waypoint.ElementOrNull(gpx + "cmt")
};
Я вижу вашу проблему, но я использовал LINQ, чтобы просто переупорядочить файл GPX, чтобы получить точки отслеживания в каждом сегменте в правильном порядке, и это кажется довольно простым .....
var trksegs = doc.Root.Descendants(ns + "trkseg");
foreach (var trkseg in trksegs)
{
List<XElement> trk = trkseg.Elements(ns + "trkpt")
.OrderBy(x => (string)x.Element(ns + "time")).ToList();
trkseg.RemoveAll();
trkseg.Add(trk);
}
, а также исправил ошибку в доставленном Файл GPX для времени
private static XDocument ConvertTimeElement(XDocument doc)
{
if (doc.Root != null)
{
var times = doc.Root.Descendants(ns + "time").ToList();
foreach (var time in times)
time.SetValue((string)ConvertSpotDateFormat(time));
}
return doc;
}
Я думаю, это довольно простой формат ....
(Проблема, которую я исправил http://www.everytrail.com/forum/viewtopic.php?f=4&t=1980&p = 6447 # p6447 )