And*_*ndy 12 c# xml xml-namespaces
我正在尝试调用需要IXmlNamespaceResolver对象的XElement.XPathSelectElements()重载.谁能告诉我如何获取(或制作)IXmlNamespaceResolver?我有一个我想在查询中使用的命名空间列表
dav*_*low 11
使用new XmlNamespaceManager(new NameTable())
.
例如,如果您有一个使用名称空间的XML文档
var xDoc = XDocument.Parse(@"<m:Student xmlns:m='http://www.ludlowcloud.com/Math'>
<m:Grade>98</m:Grade>
<m:Grade>96</m:Grade>
</m:Student>");
Run Code Online (Sandbox Code Playgroud)
然后你可以Grade
通过这样做获得节点
var namespaceResolver = new XmlNamespaceManager(new NameTable());
namespaceResolver.AddNamespace("math", "http://www.ludlowcloud.com/Math");
var grades = xDoc.XPathSelectElements("//math:Student/math:Grade", namespaceResolver);
Run Code Online (Sandbox Code Playgroud)
您可以使用实现该接口的XmlNamespaceManager
使用构造函数,它接受一个via XmlNameTable
的实例.然后,您可以调用函数来添加名称空间:System.Xml.NameTable
new NameTable()
AddNamespace
var nsMgr = new XmlNamespaceManager(new NameTable());
nsMgr.AddNamespace("ex", "urn:example.org");
nsMgr.AddNamespace("t", "urn:test.org");
doc.XPathSelectElements("/ex:path/ex:to/t:element", nsMgr);
Run Code Online (Sandbox Code Playgroud)