我必须计算出现在XML中的每个无效数字(BTNumber)的出现次数。我正在使用groovy XmlSlurper() .Please建议如何计数和计数(就像在xml中一样多次)。
例如:
BTNumber | count
----------------------------------
2205867438 | 2
78124614 | 3XML代码如下所示-
<Results>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>2205867438
</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>2461253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:50:04.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>2205867438</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>2461253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:50:18.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>2201159526</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>1111253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:53:07.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>1011159526</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>1111253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:53:18.0</DateStamp>
</Row>
</Results>
<Results>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>78124614</BTNumber>
<CPNumber>78124614</CPNumber>
<DialedNumber>7812461400</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>MyNetwork</CarrierCode>
<DateStamp>2013-03-24 10:18:50.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>78124614</BTNumber>
<CPNumber>78124614</CPNumber>
<DialedNumber>7812461400</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>MyNetwork</CarrierCode>
<DateStamp>2013-03-24 15:35:31.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>78124614</BTNumber>
<CPNumber>78124614</CPNumber>
<DialedNumber>7812461400</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>MyNetwork</CarrierCode>
<DateStamp>2013-03-24 15:36:59.0</DateStamp>
</Row>
</Results>如果有什么比XMLSlurper更容易、更快的,请给我建议。
发布于 2013-05-30 04:00:39
首先,您的xml重复了<Results>。你需要这个吗?
您可以使用如下内容来获取唯一id和相应count的映射
def xmlObj = new XmlSlurper().parseText(xml)
def btNumbers = xmlObj.Row.collect{it.BTNumber}
def countMap = btNumbers.unique(false).collectEntries{btNumber->
[btNumber, btNumbers.count(btNumber)]
}其中,xml是所提到的xml元素。
<Results>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>2205867438</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>2461253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:50:04.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>2205867438</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>2461253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:50:18.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>2201159526</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>1111253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:53:07.0</DateStamp>
</Row>
<Row>
<DialedCountry>001</DialedCountry>
<BTNumber>1011159526</BTNumber>
<CPNumber>0000000000</CPNumber>
<DialedNumber>1111253052</DialedNumber>
<Wireless>1</Wireless>
<CarrierCode>customer1</CarrierCode>
<DateStamp>2013-03-24 11:53:18.0</DateStamp>
</Row>
</Results>发布于 2019-08-23 11:41:21
假设有一个额外的quantity字段,那么在这个BTnumbers中检查相似的QTY值并在Groovy中添加相应的QTY值的理想方法是什么。
https://stackoverflow.com/questions/16822022
复制相似问题