2010-03-30 11 views
6

J'ai un problème avec la lecture de certains fichiers gml dans C#. Mes fichiers n'ont pas le schéma ou les espaces de noms et ressemble fichier de cette question:Lecture gml dans C#

Parsing GML data using C# Linq to XML

ne whitout le schéma comme celui-ci:

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

Lorsque je tente de lire le document avec XDocument.Load méthode je reçois une exception en disant: 'gml' namespace is not defined.

J'ai beaucoup de fichiers gml donc je ne veux pas ajouter le schéma et les espaces de noms à tous mes fichiers. Est-ce que quelqu'un sait comment lire mes fichiers?

Répondre

1

Vous pouvez ajouter votre espace de noms et le type par programmation.

Chargez votre fichier dans une chaîne à l'aide de File.ReadAllText(filename), ajoutez les informations de type et d'espace de noms nécessaires et analysez-les à l'aide de XDocument.Parse au lieu de Load.

2

Sauf si vous déclarez l'espace de noms associé au préfixe "gml", votre texte n'est pas valide Xml + Namespaces.

Vous pouvez mettre en œuvre une étape de pré-processus qui a fait quelque chose comme (pseudo code):

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