5

WinRTのXmlDocument.SelectSingleNodeNS関数を使用する例を誰か提供できますか? 2 番目のパラメーターが何を期待しているのか不明で、例が見つかりません。

public IXmlNode SelectSingleNodeNS(
  string xpath, 
  object namespaces
)

外部で新しい名前空間を定義する必要がある場合に、XPath 式で使用する名前空間を指定する文字列が含まれます。名前空間は、スペースで区切られた名前空間宣言属性のリストとして、XML スタイルで定義されます。このプロパティを使用して、デフォルトのネームスペースも設定できます。

4

1 に答える 1

8

namespaces パラメーターは明らかに単なる文字列 (オブジェクトとして宣言されていますが) であり、"xmlns:aliasname='namespace'" (XML スタイル) の形式で XML 名前空間宣言を含める必要があります。例えば

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

次のような 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> 

エイリアス (cb:) が XPath で使用されていることに注意してください。

名前空間が XML スタイルでない場合、悪名高い COM エラー E_Fail が発生します。

SelectNodesNS の (貧弱な) ドキュメントには、次のように書かれています。このプロパティを使用して、デフォルトのネームスペースも設定できます。」

それによると、名前空間は文字列でなければならず、複数の XML 名前空間を含めることができます (まだ試していません)。それでも、なぜそれがオブジェクトなのかという疑問は未解決です。

于 2012-11-11T07:07:55.630 に答える