我有一些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