SelectSingleNodeNS中namespaces参数的格式是什么

Jos*_*ard 5 xml windows-runtime

任何人都可以提供使用WinRT 的XmlDocument.SelectSingleNodeNS函数的示例吗?我不清楚第二个参数是什么期待的,我找不到一个例子.

public IXmlNode SelectSingleNodeNS(
  string xpath, 
  object namespaces
)
Run Code Online (Sandbox Code Playgroud)

包含一个字符串,该字符串指定在外部定义新命名空间时要在XPath表达式中使用的命名空间.命名空间以XML样式定义,作为空格分隔的命名空间声明属性列表.您也可以使用此属性设置默认命名空间.

Jür*_*yer 8

namespaces参数显然只是一个字符串(尽管声明为对象),它必须包含"xmlns:aliasname ='namespace'"(XML样式)形式的XML名称空间声明.例如

xmlDocument.DocumentElement.SelectNodesNS("cb:person", 
    "xmlns:cb='http://www.addison-wesley.de/codebook'");
Run Code Online (Sandbox Code Playgroud)

使用这样的XML文档:

<?xml version="1.0" encoding="utf-8" ?>
<persons xmlns="http://www.addison-wesley.de/codebook">
  <person id="1000">
    <firstname>Zaphod</firstname>
    <lastname>Beeblebrox</lastname>
    <type>Alien</type>
  </person>
...
</persons> 
Run Code Online (Sandbox Code Playgroud)

请注意,别名(cb :)用于XPath.

如果命名空间不是XML样式,则会出现臭名昭着的COM错误E_Fail.

SelectNodesNS的(差)文档说:"当需要在外部定义新的命名空间时,包含指定在XPath表达式中使用的命名空间的字符串.命名空间在XML样式中定义,作为空格分隔的命名空间声明属性列表.您也可以使用此属性来设置默认命名空间."

根据命名空间必须是一个字符串,可能包含多个XML命名空间(尚未尝试).问题仍然是公开为什么它是一个对象.