我是XPath新手,我有以下xml:
`<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<colors>
<color id="1">green</color>
<color id="2">red</color>
<color id="3">yellow</color>
</colors>
<items>
<item id="095">
<title>pencil</title>
<colorId>3</colorId>
</item>
<item id="100">
<title>pen</title>
<colorId>1</colorId>
</item>
<item id="200">
<title>ruler</title>
<colorId>2</colorId>
</item>
</items>
</catalog>`
如您所见,colorId值对应于颜色id属性,因此“pencil”为“yellow”(3),“pen”为“green”(1),“ruler”为“red”(2) 。 问题是我如何通过colorId值获得每个项目的价值?
提前致谢。
答案 0 :(得分:4)
这将根据title
:
id
/catalog/items/item[colorId = /catalog/colors/color/@id]/title
这将返回与color
对应的colorId
:
/catalog/colors/color[@id = /catalog/items/item/colorId]
然后,您可以添加位置谓词以选择特定关系。
答案 1 :(得分:0)
假设我理解这个问题 - 您想要查找特定颜色的<item>
- 您正在寻找的是XPath Predicates。例如:
/catalog/items/item[colorId=2]
会找到孩子的内容等于2的s。