如何检查名称空间是否存在?

时间:2018-10-22 20:24:09

标签: c# xml xsd

我们可以使用以下方法列出所有名称空间:

public static class NamespaceGetter
{
    public static IDictionary<string, string> Get(string xml)
    {
        XPathDocument x = new XPathDocument(new StringReader(xml));
        XPathNavigator foo = x.CreateNavigator();
        foo.MoveToFollowing(XPathNodeType.Element);
        return foo.GetNamespacesInScope(XmlNamespaceScope.All);
    }
}

但是,如果string xml参数没有定义名称空间,则将抛出此方法。

例如,以下有效负载将导致异常

<MyXml>
  <Cars>4</Cars>
  <Burgers>3</Burgers>
</MyXml>

如何检查字符串是否在所有地方都定义了XML名称空间?

以上的输出将返回:

enter image description here

这真的没有道理。

1 个答案:

答案 0 :(得分:0)

您的代码看起来还可以。

但是您的XML字符串无效:抛出的异常是:

The 'MyXml' start tag on line 2 position 4 does not match the end tag of 'MyXML'

XML区分大小写。