2010-03-30 10 views
6

Tengo un problema con la lectura de algunos archivos gml en C#. Mis archivos no tienen esquema o espacios de nombres y parece archivo de esta pregunta: ¿Lectura de gml en C#

Parsing GML data using C# Linq to XML

sólo se debe de existir el esquema de la siguiente manera:

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

Cuando trato de leer el documento con XDocument.Load método me sale una excepción diciendo: 'gml' namespace is not defined.

Tengo muchos archivos gml, así que no quiero agregar el esquema ni los espacios de nombres a todos mis archivos. ¿Alguien sabe cómo leer mis archivos?

Respuesta

1

Puede agregar su espacio de nombres y escribirlo programáticamente.

Cargue su archivo en una cadena usando File.ReadAllText(filename), anexe el tipo necesario e información de espacio de nombres y analícelo usando XDocument.Parse en lugar de Load.

2

A menos que declare el espacio de nombre asociado con el prefijo "gml", su texto no es válido Espacios de nombres Xml +.

Se podría aplicar una etapa de pre-proceso que hizo algo así como (pseudo código):

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