2016-06-08 108 views
1

我可以使用XPath查找所有具有名稱以特定字符集開頭並且屬性值包含特定值的屬性的元素嗎?例如:具有通配符屬性名稱和特定屬性值的C#和XPath

<items> 
    <item id="item1" attr-name0="UPC" attr-value0="12345" attr-name1="Price" attr-value1="10.00" attr-name2="Enabled" attr-value2="true"/> 
    <item id="item2" attr-name0="Price" attr-value0="25.00" attr-name1="Enabled" attr-value1="false"/> 
    <item id="item3" attr-name0="Price" attr-value0="10.00" attr-name1="UPC" attr-value1="54321" attr2-name="UPC" attr-value2="abcde"/> 
</items> 

最終,我需要爲具有指定的一個或多個UPC的項目找到id和UPC。最多有11個屬性(attr-name0到attr-name10)。我可以使用C#和XML(XPath)/ LINQ來實現這一點。謝謝!

回答

0

以下XPath應返回<item>元素,其中以「ATTR名」開頭的屬性之一具有「UPC」的價值:

//item[@*[starts-with(name(), 'attr-name') and .='UPC']] 

等效LINQ到XML看起來大約是這樣的(假設docXDocumentXElement一個實例):

doc.Descendants("item") 
    .Where(i => i.Attributes() 
       .Any(a => a.Name.ToString().StartsWith("attr-name") && a.Value == "UPC") 
    ); 

鑑於XML問題,「ITEM1」和「項目3」元件應該由XPath和上面的LINQ被返回。

相關問題