首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中读取gml

在c#中读取gml
EN

Stack Overflow用户
提问于 2010-03-30 22:15:11
回答 3查看 4.7K关注 0票数 6

我在c#中读取一些gml文件时遇到了问题。我的文件没有模式或名称空间,看起来像这个问题中的文件:

Parsing GML data using C# Linq to XML

只需像这样将模式涂白:

代码语言:javascript
复制
<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文件,所以我不想将模式和名称空间添加到所有文件中。有人知道怎么读取我的文件吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-30 22:21:52

使用带有XmlNamespaceManager的XmlTextReader。请看MSDN上的一个例子:http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.xmlnamespacemanager.aspx

票数 6
EN

Stack Overflow用户

发布于 2010-03-30 22:20:12

除非声明与"gml“前缀关联的名称空间,否则文本不是有效的Xml +名称空间。

你可以实现一个预处理步骤,比如(伪代码):

代码语言:javascript
复制
string text = ReadFromFile();
text = text.replace(" srsName=", " xmlns:gml=");
xmlDocument.LoadXml(text); 
票数 2
EN

Stack Overflow用户

发布于 2010-03-30 22:19:26

您可以通过编程方式添加命名空间和类型。

使用File.ReadAllText(filename)将文件加载到一个字符串中,附加必要的类型和名称空间信息,并使用XDocument.Parse而不是Load解析它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2545892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档