我们可以使用以下方法列出所有名称空间:
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名称空间?
以上的输出将返回:
这真的没有道理。
答案 0 :(得分:0)
您的代码看起来还可以。
但是您的XML字符串无效:抛出的异常是:
The 'MyXml' start tag on line 2 position 4 does not match the end tag of 'MyXML'
XML区分大小写。