我在c#中读取一些gml文件时遇到了问题。我的文件没有模式或名称空间,看起来像这个问题中的文件:
Parsing GML data using C# Linq to XML
只需像这样将模式涂白:
<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文件,所以我不想将模式和名称空间添加到所有文件中。有人知道怎么读取我的文件吗?
发布于 2010-03-30 22:21:52
使用带有XmlNamespaceManager的XmlTextReader。请看MSDN上的一个例子:http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.xmlnamespacemanager.aspx
发布于 2010-03-30 22:20:12
除非声明与"gml“前缀关联的名称空间,否则文本不是有效的Xml +名称空间。
你可以实现一个预处理步骤,比如(伪代码):
string text = ReadFromFile();
text = text.replace(" srsName=", " xmlns:gml=");
xmlDocument.LoadXml(text); 发布于 2010-03-30 22:19:26
您可以通过编程方式添加命名空间和类型。
使用File.ReadAllText(filename)将文件加载到一个字符串中,附加必要的类型和名称空间信息,并使用XDocument.Parse而不是Load解析它。
https://stackoverflow.com/questions/2545892
复制相似问题