1

私の分離ストレージには、次のコードで作成される Route.gpx というファイルがあります。

using (IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("Route.gpx", FileMode.Create, myStore))
{
    XNamespace ns = "http://www.topografix.com/GPX/1/1";
    XNamespace xsiNs = "http://www.w3.org/2001/XMLSchema-instance";
    XDocument xDoc = new XDocument(
        new XDeclaration("1.0", "UTF-8", "no"),
        new XElement(ns + "gpx",
            new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
            new XAttribute(xsiNs + "schemaLocation",
                "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"),
            new XAttribute("creator", "XML tester"),
            new XAttribute("version", "1.1"),
            new XElement(ns + "trk",
                new XElement(ns + "trkseg",
                    new XElement(ns + "trkpt",
                        new XAttribute("lat", "7.0"),
                        new XAttribute("lon", "19.0"),
                        new XElement(ns + "time", DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture))
                        )))));
    xDoc.Save(myStream);

しかし、今私は余分な要素を追加したいのでtrkpt、このコードで試しました:

XDocument doc1;
using (IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("Route.gpx", FileMode.Open, myStore))
{
    doc1 = XDocument.Load(myStream);
}

var root = doc1.Element("trkseg");
var rows = root.Descendants("trkpt");
var lastRow = rows.Last();
lastRow.AddAfterSelf(
//XElement trkseg =
      new XElement("trkpt",
          new XElement("time", DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture))));

using (IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("Route.gpx", FileMode.Create, myStore))
{
    doc1.Save(myStream);
}

ここから取得した コードは、例外をキャッチしてから押すだけです。

4

1 に答える 1

0

下位レベルで作成しているときに、ルート オブジェクトの子孫として「trkseg」要素にアクセスしようとしています。

試す:

var root = doc1.Element("trk").Element("trkseg"); 
于 2012-09-24T22:13:01.463 に答える