我有类似
的东西class ViewController: UIViewController {
private let formatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "mm:ss:SS"
return formatter
}()
@objc func updateElapsedTimeLabel (timer : Timer) {
if watch.isRunning {
elapsedTimeLabel.text = formatter.string(from: Date(timeIntervalSince1970: watch.elapsedTime))
} else {
timer.invalidate()
}
}
}
某些项目可能没有<li class="ProductPrice">
<span class="Regular Price">80.00</span>
<span class="Sale Price">50.00</span>
</li>
<li class="ProductPrice">
<span class="Regular Price">100.00</span>
</li>
范围。
我想提取当前的零售价格,我会选择Sale Price
,或者如果Sale和Sale Price
都存在,请仅选择Regular Price
。
我是XPath的新手,所以我不确定这个if-else是如何翻译的。
答案 0 :(得分:1)
我想提取当前的零售价格,我会选择 销售价格或如果存在销售和常规价格,请选择销售 仅限价格。
如果您知道促销价格总是在正常价格之后,请使用XPath表达式
span[@class = 'Regular Price' or @class = 'Sale Price'][last()]
在XPath 2.0中,即使您不知道订单,也可以使用此方法:
(span[@class = 'Sale Price'], span[@class = 'Regular Price'])[1]
答案 1 :(得分:0)
XSLT-1.0解决方案有点复杂:
<xsl:template match="li">
<xsl:choose>
<xsl:when test="span/@class='Sale Price'">
<xsl:value-of select="span[@class='Sale Price']" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="span[@class='Regular Price']" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
因此,如果您有XPath-2.0或更高版本,则可以使用以下内容:
<xsl:template match="li">
<xsl:value-of select="if (span/@class='Sale Price') then (span[@class='Sale Price']) else (span[@class='Regular Price'])" />
</xsl:template>
两种解决方案的输出相同:
<?xml version="1.0" encoding="UTF-8"?>
50.00
100.00
逻辑并不完全符合您的要求,但它已接近。
答案 2 :(得分:0)
您可以在python中使用 lxml 模块。到目前为止,是我使用过的最简单的模块。
from lxml import html
data = '''<li class="ProductPrice">
<span class="Regular Price">80.00</span>
<span class="Sale Price">50.00</span>
</li>
<li class="ProductPrice">
<span class="Regular Price">100.00</span>
</li>
'''
#make the html object
tree = html.fromstring(data)
li = tree.xpath('//li') #get all the li tags
for i in li:
sp = i.xpath('.//span[contains(@class,"Sale Price")]/text()')
rp = i.xpath('.//span[contains(@class,"Regular Price")]/text()')
if sp:
print('Price is :',sp[0])
else:
print('Price is :',rp[0])
我所做的是,提取促销价并检查它是否存在。 如果它存在,那么程序将打印 else 程序将打印正常价格。
对于任何查询都会发表评论。