使用& without namespace标签读取节点

时间:2013-05-27 07:23:14

标签: c# .net xml namespaces

我需要读取这样的xml文档:

<wcs:CoverageOffering>
<wcs:description>Generated from GeoTIFF</wcs:description>
<wcs:name>ndh:ndh-cyclone-mortality-risks-distribution</wcs:name>
                            ....

但是在某些服务器中,xml文档是在没有名称空间标记的情况下实现的:

<CoverageOffering>
<description>Generated from GeoTIFF</description>
<name>ndh:ndh-cyclone-mortality-risks-distribution</name>
                         ....

如何以有效的方式阅读两者? (我为每个节点写了if else语句来控制这个条件,但这似乎不是一个好方法)

2 个答案:

答案 0 :(得分:1)

使用XmlDocument并将wcs命名空间添加到XmlNamespaceManager

var document = new XmlDocument();
document.Load(...);
var nsmgr = new XmlNamespaceManager(document.NameTable);
nsmgr.AddNamespace("wcs", "http://...your ns");

var nl = document.SelectNodes("your xpath", nsmgr);

答案 1 :(得分:0)

您可以使用this XML Library。如果需要,它将使用命名空间。

您可以像以下一样使用它:

XElement root = XElement.Load(file);
string description = root.Get("path/to/description", default(string));

string description = root.XGetElement("//description", default(string));

default(string)用于Get的类型转换。您可以传递任何您想要的默认值。