2015-12-15 194 views
1

我想使用xpath查詢搜索特定文本的所有節點和所有屬性。Xpath通配符搜索

例子:

<Employee> 
    <Id>1</Id> 
    <Info FirstName="Search" LastName="Smith"> 
    <Address City="Search"/> 
    </Info> 
</Employee> 
我目前使用下面的XPath查詢

var nodes = xmlConfig.SelectNodes("//*[contains(@*,'Search')]"); 

Xpath查詢應返回的信息節點和地址的節點。但是,它只返回一個節點。

回答

1

假設您正在使用XPath 1.0,則您的XPath應按照您的預期返回Info節點和Address節點。請參閱該在線演示在以下鏈接(點擊「測試」按鈕執行的XPath):

//*[contains(@*,'Search')] 

xpathtester xpath 1.0 demo

在XPath 2.0,上面會拋出異常傳遞順序多個項目不允許作爲的第一個參數,並且發生這種情況是因爲一個元素可能具有多個屬性。 XPath的2.0相容的表達,你可以做,而不是這樣:

//*[@*[contains(.,'Search')]] 

xpathtester xpath 2.0 demo

輸出:

<Info FirstName="Search" LastName="Smith"> 
    <Address City="Search"/> 
    </Info> 

<Address City="Search"/>