2010-03-30 72 views
6

我有一個讀取c#中的一些gml文件的問題。我的文件沒有架構或命名空間,看起來像文件從這樣一個問題:在C中讀取gml#

Parsing GML data using C# Linq to XML

僅whitout模式是這樣的:

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

當我嘗試讀取XDocument.Load文檔方法我得到一個異常說:'gml' namespace is not defined

我有很多gml文件,所以我不想將架構和命名空間添加到我的所有文件中。有人知道如何閱讀我的文件嗎?

回答

1

您可以添加您的名稱空間並以編程方式鍵入。

使用File.ReadAllText(filename)將文件加載到字符串中,附加neccesary類型和名稱空間信息並使用XDocument.Parse而不是Load解析它。

2

除非您聲明與「gml」前綴關聯的名稱空間,否則您的文本無效Xml + Namespaces。

您可以實現預先處理工序是不喜歡的東西(僞代碼):

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