我想使用LINQ在数据库中插入一些字段。其中一个字段包含XML数据(GPX)。
当我运行以下代码时:
rtlq.GpxData = new XElement(route.GpxData);
我得到了这个例外:
名称不能以
'<'
字符开头,十六进制值0x3C
我想说route.GpxData
有一个类型字符串,我把这个类型转换为xml。
这是我的全部代码:
public int Save(Route route)
{
aspnetdbDataContext aspdb = new aspnetdbDataContext();
RouteLinq rtlq=new RouteLinq();
rtlq.UserId = route.UserId;
rtlq.SourceName = route.Name;
//I have an error here
rtlq.GpxData = new XElement(route.GpxData);
rtlq.CreationTime = route.Time;
aspdb.RouteLinqs.InsertOnSubmit(rtlq);
aspdb.SubmitChanges();
int k1;
System.Data.Linq.ChangeSet cs1 = aspdb.GetChangeSet();
k1=cs1.Inserts.Count();
TrackPointlinq trlq = new TrackPointlinq();
foreach (var trackpoint in route.TrackPoints)
{
trlq.RouteFK=route.Id;
trlq.TrackTime=trackpoint.Time;
trlq.Latitude=(float) trackpoint.Latitude;
trlq.Longitude=(float)trackpoint.Longitude;
trlq.Elevation=trackpoint.Elevation;
}
aspdb.TrackPointlinqs.InsertOnSubmit(trlq);
aspdb.SubmitChanges();
int k2;
System.Data.Linq.ChangeSet cs2 = aspdb.GetChangeSet();
k2 = cs2.Inserts.Count();
if ((k1 == 0) && (k2 == 0))
{
return 1;
}
else
return 0;
}
请你帮我解决这个问题吗?
修改 XML文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpsies="http://www.gpsies.com/GPX/1/0" creator="GPSies http://www.gpsies.com - GpsiesTrack" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.gpsies.com/GPX/1/0 http://www.gpsies.com/gpsies.xsd">
<metadata>
<name>GpsiesTrack</name>
<link href="http://www.gpsies.com/">
<text>GpsiesTrack on GPSies.com</text>
</link>
<time>2012-06-26T18:58:39Z</time>
</metadata>
<trk>
<name>GpsiesTrack on GPSies.com</name>
<trkseg>
<trkpt lat="50.81482934" lon="12.90653228">
<ele>305.00000</ele>
<time>2012-05-01T00:00:00Z</time>
</trkpt>
<trkpt lat="50.85364209" lon="12.92404174">
<ele>297.00000</ele>
<time>2012-05-01T00:15:27Z</time>
</trkpt>
</trkseg>
</trk>
</gpx>
答案 0 :(得分:2)
route.GpxData
可能是XML中的字符串。接受字符串名称的XElement
构造函数将寻求将其转换为表示XML元素的对象。 XML元素NAME不能包含<
个字符,尽管`&lt;'可以在内容中(如果正确转义)。
答案 1 :(得分:1)
尝试
rtlq.GpxData = XElement.Parse(route.GpxData);