我在应用中使用XML数据源。其中一个名为quantity
的字段有时为零,因此:
<quantity>0</quantity>
但是,当我尝试获取该值时,JSON数据结构中的实际值不是0
,它就不存在了。其他字段显示在其中的$t
元素,但这个没有:
'item' :{
'quantity' :{},
'name' :{'$t' : 'ItemName'}
}
我想pick()
输出该值,并确定它是否为正数(如果它为零,我会做其他事情)。我怎么能这样做?
编辑:当存在正常数值时,XML看起来像这样
<quantity>100</quantity>
,JSON看起来像这样
'quantity' :{'$t' :100}
这应该是这样的。
答案 0 :(得分:2)
我认为这可能是一个错误,但我有办法让它工作直到它被修复。
示例XML:
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
yahoo:count="0" yahoo:created="2010-11-24T18:16:40Z" yahoo:lang="en-US">
<diagnostics>
<user-time>858</user-time>
<service-time>0</service-time>
<build-version>9847</build-version>
</diagnostics>
<results/>
</query>
示例KRL:
ruleset a60x435 {
meta {
name "xml test"
description <<
testing xml node values that are 0
>>
author "Mike Grace"
logging on
}
global {
dataset testXml:XML <- "http://dl.dropbox.com/u/1446072/apps/test/test1.xml" cachable for 1 month;
}
rule getting_zero_value_from_xml_node {
select when pageview ".*"
pre {
nodeValue = testXml.pick("$..service-time.$t");
testValue = "#{nodeValue}".replace(re/(ARRAY).*/,"$1");
nodeValue = (testValue eq "ARRAY") => 0 | nodeValue;
}
{
notify("nodeValue",nodeValue) with sticky = true;
}
}
}
说明:
当XML节点转换为JSON并且值为0时,它将变为空哈希。在服务器上,变量是指向哈希的指针。因为我们可以强制指针指向字符串并检查它,然后我们可以在节点值为零时处理这种情况。