2010-03-30 44 views
6

Tôi gặp sự cố khi đọc một số tệp gml trong C#. tác phẩm của tôi không có sơ đồ hoặc không gian tên và trông giống như tập tin từ câu hỏi này:Đọc gml trong C#

Parsing GML data using C# Linq to XML

chỉ whitout giản đồ như thế này:

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

Khi tôi cố gắng đọc tài liệu với XDocument.Load phương pháp tôi nhận được một ngoại lệ nói rằng: 'gml' namespace is not defined.

Tôi có nhiều tệp gml nên tôi không muốn thêm giản đồ và không gian tên vào tất cả các tệp của mình. Có ai biết cách đọc tệp của tôi không?

Trả lời

1

Bạn có thể thêm không gian tên của mình và nhập theo chương trình.

Tải tệp của bạn vào chuỗi bằng cách sử dụng File.ReadAllText(filename), thêm thông tin loại và không gian tên cần thiết và phân tích cú pháp bằng cách sử dụng XDocument.Parse thay vì Load.

2

Trừ khi bạn khai báo không gian tên được liên kết với tiền tố "gml", văn bản của bạn không hợp lệ Xml + Không gian tên.

Bạn có thể thực hiện một bước quá trình trước đó đã làm một cái gì đó tương tự (pseudo code):

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