Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何使用xpath读取多个属性,并在此基础上触发jenkins作业_Xml_Xpath_Jenkins - Fatal编程技术网

Xml 如何使用xpath读取多个属性,并在此基础上触发jenkins作业

Xml 如何使用xpath读取多个属性,并在此基础上触发jenkins作业,xml,xpath,jenkins,Xml,Xpath,Jenkins,我有一个xml文件(executeRM.xml),其内容如下所述 <r1> <n1 name="component1" version="14.0" state="ToBeInstalled"/> <n2 name="Component2" version="13.0" state="Installed"/> <n3 name="Component3" version="12.0" state="TobeInstalled"></r1>

我有一个xml文件(executeRM.xml),其内容如下所述

<r1> <n1 name="component1" version="14.0" state="ToBeInstalled"/> <n2 name="Component2" version="13.0" state="Installed"/> <n3 name="Component3" version="12.0" state="TobeInstalled"></r1>

根据FSTrigger帮助:

轮询指定XML文件的内容。你必须给出XPath 表达。如果XPath表达式的值 在两次投票之间发生了变化

你确定你的xPath吗

/r1/n1[@name='Component1' and @state='ToBeInstalled'] /r1/n2[@name='Component2' and @state='ToBeInstalled'] /r1/n3[@name='Component3' and @state='ToBeInstalled']
对吗?你所拥有的似乎是3个不同的XPath

即使您只是使用
/r1/n1[@name='Component1'和@state='ToBeInstalled']
这也只是选择了n1,一个没有文本值的节点,所以它永远不会改变(这只是我的理论)

我能通过使用 例如,
/r1/n1/@state
,但我认为这不会提供您想要的控制(并且您可能会触发多个构建)


我认为您需要更多关于如何计算XPath表达式值的信息。您可以向维护人员询问更多信息。

您好,ptha,您完全正确。在任何时候,如果任何一个或所有三个(它可能会增加到6-7)条件保持良好,那么我应该能够触发构建。如果我使用/r1/n1/@state,就会触发多个构建。因此,要么我必须使用正确的Xpath查询,要么应该使用其他触发机制。请建议我是否可以使用xpath查询,或者最好使用其他方法。但是XML结构保持不变,我可能需要添加几个节点,但属性保持不变。对于任何组件,如果属性值为“ToBeInstalled”,则应触发生成。@Sachidananda您可能必须使用脚本触发器插件之类的东西,或者如果executeRM.xml文件位于源代码管理存储库中,则可以使用某种提交钩子来触发Jenkins作业并完全避免轮询。正如我所说的,您必须与FSTrigger的开发人员交谈,以获得更多关于这方面的信息。
/r1/n1[@name='Component1' and @state='ToBeInstalled'] /r1/n2[@name='Component2' and @state='ToBeInstalled'] /r1/n3[@name='Component3' and @state='ToBeInstalled']