Не удается создать тег XML с двоеточием в имени с помощью XElement

Мне нужно создать теги XML с именами geo:lat и geo:long для создания фида GeoRSS. Но это бросает

Символ ':', шестнадцатеричное значение 0x3A, не может быть включен в имя.

Часть кода такова:

 XElement("geo:lat", item.Latitude);
 XElement("geo:long", item.Longitude);

Как я могу достичь этого формата в С#?

<?xml version="1.0"?>
<?xml-stylesheet href="/eqcenter/catalogs/rssxsl.php?feed=eqs7day-M5.xml" type="text/xsl" 
              media="screen"?>
<rss version="2.0" 
  xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>USGS M5+ Earthquakes</title>
 <description>Real-time, worldwide earthquake list for the past 7 days</description>
 <link>https://earthquake.usgs.gov/eqcenter/</link>
 <dc:publisher>U.S. Geological Survey</dc:publisher>
 <pubDate>Thu, 27 Dec 2007 23:56:15 PST</pubDate>
 <item>
   <pubDate>Fri, 28 Dec 2007 05:24:17 GMT</pubDate>
   <title>M 5.3, northern Sumatra, Indonesia</title>
   <description>December 28, 2007 05:24:17 GMT</description>
 <link>https://example.com</link>
   <geo:lat>5.5319</geo:lat>
   <geo:long>95.8972</geo:long>
 </item>


person gneric    schedule 20.07.2018    source источник


Ответы (1)


geo — это пространство имен префикс имени lat и lon.

XNamespace geo = "http://www.w3.org/2003/01/geo/wgs84_pos#";
XNamespace dc= "http://purl.org/dc/elements/1.1/";

XElement(geo + "lat", item.Latitude);
XElement(geo + "long", item.Longitude);
person Backs    schedule 20.07.2018
comment
Пробовал раньше. Любые идеи, почему он производит <lat xmlns="http://www.w3.org/2003/01/geo/wgs84_pos">1231231</lat> вместо <geo:lat>? - person gneric; 20.07.2018
comment
@gneric, потому что это одно и то же, но написанное по-другому - person Backs; 20.07.2018
comment
Хорошо, спасибо, я очень надеюсь, что это то же самое, и у него не будет проблем с юзабилити. - person gneric; 20.07.2018
comment
@gneric нет проблем, это правильный xml - person Backs; 20.07.2018
comment
Вы можете вставить атрибут с именем XNamespace.Xmlns + "geo", чтобы получить префикс на выходе. - person bommelding; 20.07.2018
comment
@bommelding Именно то, что я просил в дополнение к ответу. Спасибо. - person gneric; 20.07.2018