2012-09-14 60 views
0

我應該如何在C#編寫代碼來創建這樣如何用命名空間前綴創建XML?

<ymaps:GeoObjectCollection> 
    <gml:name>Something</gml:name> 
    <gml:featureMembers> 
     <ymaps:GeoObject> 
      <gml:name>Something</gml:name> 
      <gml:description>Something</gml:description> 
      <gml:LineString> 
       <gml:pos>50.588298 55.145683</gml:pos> 
       <gml:pos>50.588290 55.145678</gml:pos> 
       <gml:pos>50.588288 55.145678</gml:pos> 
      </gml:LineString> 
      <ymaps:style>#customStyle1</ymaps:style> 
     </ymaps:GeoObject> 

這Yandex的的xml文件的XML文件,它有XSD文件上http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd

+1

閱讀關於XML名稱空間。 – BoltClock

回答

0

下面演示瞭如何使用LINQ to XML創建所需的XML。我已經創建了兩個類來存儲數據:GeoObjectPos

var geoObjects = new[] { 
    new GeoObject { 
    Name = "Something", 
    Description = "Something", 
    Line = new[] { 
     new Pos { X = 50.588298M, Y = 55.145683M }, 
     new Pos { X = 50.588290M, Y = 55.145678M }, 
     new Pos { X = 50.588288M, Y = 55.145678M } 
    }, 
    Style = "#customStyle1" 
    } 
}; 

使用此代碼創建的XML:

XNamespace ymaps = "http://maps.yandex.ru/ymaps/1.x"; 
XNamespace gml = "http://www.opengis.net/gml"; 
var xElement = new XElement(
    ymaps + "GeoObjectCollection", 
    new XAttribute(XNamespace.Xmlns + "ymaps", ymaps), 
    new XAttribute(XNamespace.Xmlns + "gml", gml), 
    new XElement(gml + "name", "Something"), 
    new XElement(gml + "featureMembers", 
    geoObjects.Select(
     geoObject => new XElement(
     ymaps + "GeoObject", 
     new XElement(gml + "name", geoObject.Name), 
     new XElement(gml + "description", geoObject.Description), 
     new XElement(gml + "LineString", 
      geoObject.Line.Select(
      pos => new XElement(
       gml + "pos", 
       String.Format(CultureInfo.InvariantCulture, "{0} {1}", pos.X, pos.Y) 
      ) 
     ) 
     ), 
     new XElement(ymaps + "style", geoObject.Style) 
    ) 
    ) 
) 
); 

如果你寫出來xElement您會收到以下XML:

<ymaps:GeoObjectCollection xmlns:ymaps="http://maps.yandex.ru/ymaps/1.x" xmlns:gml="http://www.opengis.net/gml"> 
    <gml:name>Something</gml:name> 
    <gml:featureMembers> 
    <ymaps:GeoObject> 
     <gml:name>Something</gml:name> 
     <gml:description>Something</gml:description> 
     <gml:LineString> 
     <gml:pos>50.588298 55.145683</gml:pos> 
     <gml:pos>50.588290 55.145678</gml:pos> 
     <gml:pos>50.588288 55.145678</gml:pos> 
     </gml:LineString> 
     <ymaps:style>#customStyle1</ymaps:style> 
    </ymaps:GeoObject> 
    </gml:featureMembers> 
</ymaps:GeoObjectCollection> 
+0

謝謝,你有沒有使用yandex地圖? –