重複の可能性:
XDocumentのデフォルトのXML名前空間を設定する方法
KMLファイルをオンザフライで作成し、特定のパスに保存するために、Asp.net C#でコードを記述しようとしています。kmlタグのxmlns="http://earth.google.com/kml/2.2"属性を追加しようとすると、コードでエラーが発生します(以下を参照)。xmlnsを「id」などの別の単語に置き換えてみましたが、問題なく動作します。「xmlns」という言葉と関係がありますか??!私にとってはかなり奇妙です。
問題が何であるかを理解しているなら、私に解決策を提供してください...ありがとう!
私のコード:
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", ""),
new XComment("This is comment by me"),
new XElement("kml", new XAttribute("xmlns", "http://earth.google.com/kml/2.2"),
new XElement("Document",
new XElement("Name", "something"), new XElement("Placemark",
new XAttribute("id", "1"),
new XElement("title", "something"),
new XElement("description", "something"),
new XElement("LookAt",
new XElement("Longitude", "49.69"),
new XElement("Latitude", "32.345")), new XElement("Point", new XElement("Coordinates", "49.69,32.345,0"))))));
doc.Save(Server.MapPath(@"~\App_Data\markers.xml"));
それが与えるランタイムエラー:
プレフィックス''は、同じ開始要素タグ内で''から' http://earth.google.com/kml/2.2 'に再定義することはできません。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとそれがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。
例外の詳細:System.Xml.XmlException:同じ開始要素タグ内でプレフィックス''を''から' http://earth.google.com/kml/2.2 'に再定義することはできません。
作成したいkmlファイル:
<?xml version="1.0" encoding="utf-8"?>
<!--This is comment by me-->
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Name>something</Name>
<Placemark id="1">
<title>something</title>
<description>something</description>
<LookAt>
<Longitude>49.69</Longitude>
<Latitude>32.345</Latitude>
</LookAt>
<Point>
<Coordinates>49.69,32.345,0</Coordinates>
</Point>
</Placemark>
</Document>
</kml>