2016-03-15 47 views
0

我想選擇第二MyElement,如果它已經不退出:維克斯XUtil的XPath採取第二個元素不工作

<util:XmlConfig Id="CreateMyElement" 
       File="[#MyXml.xml]" 
       Action="create" 
       ElementPath="/path/to/the/MyElement[2]/next/items" 
       VerifyPath="/path/to/the/MyElement[2]/next/items/itemToAdd[\[]@MyAttribute='MyValue'[\]]" 
       Name="itemToAdd" 
       Node="element"/> 

不幸的是,MyElement [2]不起作用。爲什麼?

回答

0

我覺得你VerifyPath的值應在ElementPath,而且我不認爲Element[2]會的工作,使用這樣的事情,而不是:在形式

/configuration/system.diagnostics/sources/source[\[]@name='Bla.Bla.Services.Mobile.UpdateService'[\]]/listeners/add 
+0

是的,[2]必須是這樣的:[\ [] 2 [\]],但不幸的是它不起作用 –

0

XPath表達式,例如,parent/MyElement[2],將在每個<parent>拉出每秒<MyElement>

<parent> 
    <MyElement>foo</MyElement> 
    <MyElement>bar</MyElement><!-- This one will be returned by XPath --> 
</parent> 

如果XML文檔中的所有元素<parent>只有一個或更少<MyElement>孩子,然後喲你的XPath將不會返回任何內容。如果你的意思是你的XPath的開頭部分匹配的所有<MyElement>中只返回第二<MyElement>元素,你需要使用括號,例如:

(/path/to/the/MyElement)[2]/next/items 
+0

謝謝,是否有可能選擇wix中的最後一個元素? –

+0

@edekk XPath有['last()'](https://msdn.microsoft.com/en-us/library/ms256083%28v=vs.110%29.aspx)函數,你可以使用:'(/path/to/the/MyElement)[last()]' – har07

+0

謝謝,但Wix是否支持它,當我嘗試時出現錯誤。 –

相關問題