读取没有名称空间标记的&节点

本文关键字:节点 有名称 空间 读取 | 更新日期: 2023-09-27 18:15:23

我需要像这样读取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语句来控制这个条件,但这似乎不是一个好方法)

读取没有名称空间标记的&节点

使用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);

您可以使用这个XML库。如果需要,它将使用一个命名空间。

你可以这样使用:

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

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

default(string)用于Get的类型转换。