2010-03-30 6 views
6

Ich habe ein Problem mit dem Lesen einiger gml-Dateien in C#. Meine Dateien nicht Schema oder Namespaces und sieht aus wie Datei von dieser Frage:Lesen von gml in C#

Parsing GML data using C# Linq to XML

nur whitout das Schema wie folgt aus:

<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> 

Wenn ich versuche, das Dokument mit XDocument.Load zu lesen Methode bekomme ich eine Ausnahme sagen: 'gml' namespace is not defined.

Ich habe viele GML-Dateien, also möchte ich nicht das Schema und Namespaces zu allen meinen Dateien hinzufügen. Weiß jemand, wie man meine Dateien liest?

Antwort

1

Sie könnten Ihren Namespace hinzufügen und programmatisch eingeben.

Laden Sie Ihre Datei in eine Zeichenfolge mit File.ReadAllText(filename), hängen Sie die erforderlichen Typ und Namespace Informationen an und analysieren Sie sie mit XDocument.Parse anstelle von Load.

2

Sofern Sie nicht den mit dem Präfix "gml" verknüpften Namespace deklarieren, ist Ihr Text nicht gültig Xml + Namespaces.

Sie könnten einen Vorprozess Schritt implementieren, die etwas tat, wie (Pseudocode):

string text = ReadFromFile(); 
text = text.replace(" srsName=", " xmlns:gml="); 
xmlDocument.LoadXml(text);