我有一些XML,我需要搜索字段符合特定条件的部分。我正在尝试使用XPath,但不知道如何查找两个“字段”部分。这里是查找两个项目中的XPath:什么是XPath来搜索多个属性和元素?
/importJob/links/link/field[@name='ModuleId' and @value='ab6f15c7-bb68-4243-8815-02818c6dbbee']"
但如果我试试这个,它没有找到任何物品:
/importJob/links/link/field[@name='ModuleId' and @value='ab6f15c7-bb68-4243-8815-02818c6dbbee' and @name='SystemId' and @value='850fd5eb-0985-4169-bce9-c62ad0335c5f']"
这里是源XML:
<importJob>
<links>
<link linkId="00cb3dca-ffd6-4a90-b690-01e99913708d" LastModifiedDate_UTC="2012-10-24T23:28:00">
<field name="ModuleId" value="ab6f15c7-bb68-4243-8815-02818c6dbbee" />
<field name="SystemId" value="850fd5eb-0985-4169-bce9-c62ad0335c5f" />
</link>
<link linkId="00cb3dca-ffd6-4a90-b690-01e99913708d" LastModifiedDate_UTC="2012-10-24T23:28:00">
<field name="ModuleId" value="ab6f15c7-bb68-4243-8815-02818c6dbbee" />
<field name="SystemId" value="3c922537-0457-4fc5-a282-ee5a5f7084f2" />
</link>
<link linkId="00cb3dca-ffd6-4a90-b690-01e99913708d" LastModifiedDate_UTC="2012-10-24T23:28:00">
<field name="ModuleId" value="b77d692a-1f89-4abb-8af2-0c955364107a" />
<field name="SystemId" value="850fd5eb-0985-4169-bce9-c62ad0335c5f" />
</link>
<link linkId="00cb3dca-ffd6-4a90-b690-01e99913708d" LastModifiedDate_UTC="2012-10-24T23:28:00">
<field name="ModuleId" value="b77d692a-1f89-4abb-8af2-0c955364107a" />
<field name="SystemId" value="3c922537-0457-4fc5-a282-ee5a5f7084f2" />
</link>
</links>
</importJob>
有人可以通过告诉我是否可以使用XPath来做到这一点,如果是这样,那么正确的XPath命令是什么。在Live代码中,这将会动态创建,并且可能会有一个或多个“field”元素。我可以编程,但首先需要XPath命令。
编辑1 -------------------------
我的问题可能是更清楚,所以我在这里加入了一些更多的细节。
我需要返回一个或多个“链接”部分,其中所有“名称”和“值”属性都与XPath命令匹配。所以根据我的示例xml,我需要创建一个XPath命令,它将返回第一个“链接”部分。 ModuleId在前两个“链接”部分中是相同的,这就是为什么命令必须使用多个“字段”部分,以便它只返回第一个“链接”部分。在我尝试创建一个XPath命令(上面的第二个命令)时,可以看到它有两个“名称”和两个“值”部分。我希望这会找到第一个“链接”部分。
EDIT 2 -------------------------
我现在用的这个XPath命令,它似乎工作。我需要使用一些括号并移动“字段”部分,以便返回链接部分。
/importJob/links/link[(field/@name='SystemId' and field/@value='850fd5eb-0985-4169-bce9-c62ad0335c5f') and (field/@name='ModuleId' and field/@value='ab6f15c7-bb68-4243-8815-02818c6dbbee')]
我已经更新了我的问题,因为我不认为这是清楚我试图实现。我会尝试一下你给出的例子,看看我是否可以使它与我需要的一致。 – Retrocoder
@Retrocoder所以,你想'链接'元素,而不是'field'元素,你在你的代码中选择? –
我想要基于其字段值的链接部分。我想我已经设法根据你的例子做到了。我将把它放在原来的问题中。 – Retrocoder