0

このようなxmlファイルを作成するには、C#でコードをどのように記述すればよいですか

<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 ファイルで、http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd に xsd ファイルがあります

4

2 に答える 2

0

これは、LINQ to XML を使用して必要な XML を作成する方法のデモンストレーションです。データを格納する 2 つのクラスを作成しました: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>
于 2012-09-14T08:38:25.713 に答える
0

まず、XMLXML 名前空間XML スキーマ、および.NET で XML データを処理する方法について理解してください。基本を習得したら、XML スキーマ定義ツール (Xsd.exe)を使用して XSD からクラスを生成し、それをアプリケーション内で使用します。

于 2012-09-14T08:12:33.527 に答える