2016-03-15 60 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是否支持它,当我尝试时出现错误。 –