2010-03-30 19 views
6

Ho un problema con la lettura di alcuni file gml in C#. I miei file non hanno schema o spazi dei nomi e si presenta come file da questa domanda:Leggere gml in C#

Parsing GML data using C# Linq to XML

solo whitout lo schema come questo:

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

Quando provo a leggere il documento con XDocument.Load metodo ottengo un'eccezione dicendo: 'gml' namespace is not defined.

Ho molti file gml quindi non voglio aggiungere lo schema e i namespace a tutti i miei file. Qualcuno sa come leggere i miei file?

risposta

1

È possibile aggiungere lo spazio dei nomi e digitare a livello di codice.

Caricare il file in una stringa utilizzando File.ReadAllText(filename), aggiungere il tipo necessario e le informazioni sullo spazio dei nomi e analizzarlo utilizzando XDocument.Parse anziché Load.

2

A meno che non si dichiari lo spazio dei nomi associato al prefisso "gml", il testo non è valido Xml + Namespace.

Si potrebbe implementare una fase di pre-processo che ha fatto qualcosa di simile (pseudo codice):

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