我有一些XML,看起来像这样:XPath中,选择一个备用节点
<container>
<type>01</type>
<text>one</text>
</container>
<container>
<type>02</type>
<text>two</text>
</container>
编辑的container
S的顺序是不固定的。
我使用xPath(通过ruby的nokogiri)从本文档中选择文本。我希望能够在container
,type
为02,但text
从container
type
为01,如果不存在。
我可以做
/container/type[text() = "02" or text() = "01"]/parent::container
这将让我的两个元素,然后我可以使用一些红宝石进行排序,并采取正确的(因为这将首先返回01元),但这种感觉笨拙。
我已经搜索了stackoverflow,并没有什么立即显而易见的,它允许我用简单的xpath对元素输出进行排序,但是有没有办法命令xpath接受一个元素,但是如果不存在则回退到另一个元素?
干杯!
虽然纯xpath解决方案可能更清洁,但另一种方法是先单独尝试02,然后单独检查01。当然,这可能看起来像现在一样混乱 – Himanshu
这就是我现在要做的,我正在寻找这个解决方案的唯一原因是我认为“02”记录更可能不存在,而我假设任何纯xpath解决方案比从ruby进行两个xpath查询要快。 –