2012-11-10 48 views
5

任何人都可以提供使用WinRT的XmlDocument.SelectSingleNodeNS函數的示例嗎?我不清楚第二個參數是什麼,我找不到一個例子。SelectSingleNodeNS中名稱空間參數的期望格式

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爲循環和爲每個循環 –

回答

8

的命名空間參數顯然只是一個字符串(儘管聲明爲對象)必須包含以下格式的XML命名空間聲明「的xmlns:= aliasname的‘命名空間’」(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的(差)的文件說: 「包含一個字符串,用於指定XPath表達式中使用命名空間的時候,有必要從外部定義新的命名空間命名空間中的XML樣式定義爲空格分隔的列表。的命名空間聲明屬性,你也可以使用這個屬性來設置默認的命名空間。「

根據該命名空間必須是一個字符串,並可能包含多個XML命名空間(尚未嘗試)。問題仍然是爲什麼它是一個對象。

+0

我讀MSDN的「包含一個字符串」,並假定該參數是某種複雜的對象,或數組,或某事,有一個數組項或屬性的一些無證名稱,它是字符串類型,具有名稱空間URI。什麼樣的惡夢;花了我一個小時的谷歌搜索找出如何處理它,但你的優秀答案是。謝謝。 –

+0

我可以在這裏掛鉤並詢問您是否設法使用xpath:date和WinRT XML代碼之類的xpath 2.0函數?我得到: '0x80004005 - JavaScript運行時錯誤:未知的方法。 (x):date('2011-09-22T00:00:00.000Z')< - ge xs:date(@validFrom)和xs:date(' 2011-09-22T00:00:00.000Z')le xs:date(@validTo)]' – philk

相關問題