6

C#でいくつかのgmlファイルを読み取るのに問題があります。私のファイルにはスキーマまたは名前空間がなく、この質問のファイルのように見えます:

C#LinqtoXMLを使用したGMLデータの解析

このようなスキーマがない場合のみ:

<gml:Polygon srsName='http://www.opengis.net/gml/srs/epsg.xml#4283'>
 <gml:outerBoundaryIs>
  <gml:LinearRing>
   <gml:coord>
    <gml:X>152.035953</gml:X>
    <gml:Y>-28.2103190007845</gml:Y>
   </gml:coord>
   <gml:coord>
    <gml:X>152.035957</gml:X>
    <gml:Y>-28.2102020007845</gml:Y>
   </gml:coord>
   <gml:coord>
    <gml:X>152.034636</gml:X>
    <gml:Y>-28.2100120007845</gml:Y>
    </gml:coord>
   <gml:coord>
    <gml:X>152.034617</gml:X>
    <gml:Y>-28.2101390007845</gml:Y>
    </gml:coord>
   <gml:coord>
    <gml:X>152.035953</gml:X>
    <gml:Y>-28.2103190007845</gml:Y>
    </gml:coord>
  </gml:LinearRing>
 </gml:outerBoundaryIs>
</gml:Polygon>

XDocument.Loadメソッドを使用してドキュメントを読み込もうとすると、次のような例外が発生します'gml' namespace is not defined

gmlファイルがたくさんあるので、すべてのファイルにスキーマと名前空間を追加したくありません。誰かが私のファイルを読む方法を知っていますか?

4

3 に答える 3

6

XmlNamespaceManagerでXmlTextReaderを使用します。こちらのMSDNの例を参照してください:http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.xmlnamespacemanager.aspx

于 2010-03-30T14:21:52.387 に答える
2

「gml」プレフィックスに関連付けられた名前空間を宣言しない限り、テキストは有効なXml+名前空間ではありません。

(擬似コード)のような前処理ステップを実装できます。

string text = ReadFromFile();
text = text.replace(" srsName=", " xmlns:gml=");
xmlDocument.LoadXml(text); 
于 2010-03-30T14:20:11.813 に答える
1

名前空間を追加して、プログラムで入力することができます。

を使用してファイルを文字列にロードし、必要なFile.ReadAllText(filename)タイプと名前空間情報を追加し、のXDocument.Parse代わりにを使用して解析しLoadます。

于 2010-03-30T14:19:25.783 に答える