2017-02-13 131 views
0

我有XPaths的基礎知識,但在確定在C#代碼中是否可以使用XPath時可能會遇到一些問題(或者如果我需要將它移出到其他代碼中,目前已經完成)。使用具有節點屬性的XPath

我有一個包含以下結構的XML文檔:

<xml> 
    <parameters> 
     <setParameter name="SomeName" value="SomeValue" /> 
    </parameters> 
</xml> 

在有多個設置參數值。現在我需要做的只是檢索那些包含name屬性的某些值的setParameter節點。我可能有這些值的可能匹配列表,但它們不會完全匹配,它們將是節點的名稱屬性必須包含的值。

例如在結構上面的代碼,如果我有「人」要匹配的值,它會回來與節點,爲「男人」被包含在「SomeName」

什麼是速記去做這個?

+0

你有沒有xpath的例子? – eLRuLL

+0

很簡單:「參數/ setParameter」 –

回答

1

檢索命名value具有名爲setParameter所有元素的所有屬性的含有men一個name屬性的值的值:

//setParameter[contains(@name, 'men')]/@value 
  • //的setParameter

檢索名爲setParameter所有節點(可以被替換爲/xml/parameters/setParameter

  • [...]

檢查當前節點選擇

  • 包含(@name, '男人')

返回true屬性如果name屬性的值包含men

  • /@值

檢索value屬性的值。

+0

這是不區分大小寫? – Polyfun

+0

@Polyfun不,它區分大小寫。請參閱[此答案](http://stackoverflow.com/a/9805020/3283203)以區分大小寫。 – Kilazur

+0

OP想要不區分大小寫的匹配。 – Polyfun

0

我不認爲有一種方法來匹配通配符的屬性,但你可以使用contains方法是這樣的:

//parameters/setParameter[contains(@name, "stringexample")] 
0

根據您的XPath版本這可能工作也可能不:

//setParameter[matches(@name,"men", "i") or matches(@name,"else", "i")] 

這應該與包含"men"什麼"else"name屬性匹配<setParameter>。這是不區分大小寫的

試着讓我知道結果

相關問題