2010-03-30 17 views
6

Mam problem z odczytaniem niektórych plików gml w języku C#. Moje pliki nie mają schematu lub nazw i wygląda plik z tym pytanie:Czytanie gml w C#

Parsing GML data using C# Linq to XML

tylko whitout schemat tak:

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

Kiedy próbuję odczytać dokument z XDocument.Load metoda otrzymuję wyjątek mówiąc: 'gml' namespace is not defined.

Mam wiele plików gml, więc nie chcę dodawać schematu i przestrzeni nazw do wszystkich moich plików. Czy ktoś wie, jak czytać moje pliki?

Odpowiedz

1

Możesz dodać swoją przestrzeń nazw i typ programowo.

Załaduj plik do ciągu znaków, używając File.ReadAllText(filename), dołącz informacje o typie i przestrzeni nazw i przeanalizuj je, używając XDocument.Parse zamiast Load.

2

Jeśli nie zadeklarujesz przestrzeni nazw skojarzonej z prefiksem "gml", Twój tekst nie jest prawidłowy Xml + Namespaces.

Można wdrożyć etapu wstępnego procesu, który zrobił coś podobnego (pseudo kod):

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