2012-11-10 5 views
5

WinRTにXmlDocument.SelectSingleNodeNS関数を使用する例はありますか?私は2番目のパラメータが何を予期しているのか不明で、例は見つけられません。 「:エイリアス名= 『名前空間』のxmlns」(XML形式)SelectSingleNodeNSのnamespacesパラメータで期待される形式

public IXmlNode SelectSingleNodeNS(
    string xpath, 
    object namespaces 
) 

Contains a string that specifies the namespaces to use in XPath expressions when it is necessary to define new namespaces externally. Namespaces are defined in the XML style, as a space-separated list of namespace declaration attributes. You can use this property to set the default namespace as well.

+0

いいえ、パフォーマンス上のペナルティはありません。 [1]この[応答]の[1] を見てみましょう:http://stackoverflow.com/questions/256859/is-there-a-performance-difference-between-a -for-loop-for-each-loop –

答えて

8

名前空間パラメータは、明らか形式のXML名前空間宣言を含まなければならない(オブジェクトとして宣言が)単なる文字列です。このようなXML文書と例えば

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

作品:エイリアス(CBは:)のXPathで使用されたこと

<?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> 

注意。

名前空間がXMLスタイルでない場合、悪名高いCOMエラーE_Failが発生します。 "外部で新しい名前空間を定義する必要がある場合、XPath式で使用する名前空間を指定する文字列を含みます。名前空間は、スペースで区切られたリストとしてXMLスタイルで定義されています。このプロパティを使ってデフォルトの名前空間を設定することができます。

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

+0

MSDNの「文字列を含んでいます」を読んで、パラメータが文書化されていない配列アイテムやプロパティを持っていた何らかの複雑なオブジェクト、名前は、名前空間URIを持つ型文字列でした。どのような悪夢。私はそれで何をすべきかを理解するために1時間のグーグルを取ったが、あなたの優れた答えはそれだった。ありがとうございました。 –

+0

xs:dateのようなxp​​ath 2.0の関数をWinRT XMLコードで使用することができたかどうか尋ねてみてください。私は取得しています: '0x80004005 - JavaScriptランタイムエラー:不明なメソッド。 xs:date( '2011-09-22T00:00:00.000Z')< - code xs:date(@validFrom)およびxs:date( ' 2011-09-22T00:00:00.000Z ')le xs:date(@validTo)] ' – philk

関連する問題