Использование XmlSlurper: Как выбрать подэлементы при итерации по GPathResult

Я использую NTP всюду по целой сети в моей компании, и это работает скорее хорошо. Ключ должен иметь один авторитетный сервер в локальной сети и иметь каждую машину в сети, синхронизируются с ним. Лучшему нужно было установить радио-часы на том сервере. NTP является большим, потому что он только исправляет часы время от времени, но он на самом деле вычисляет и корректная тактовая частота, делающая его более точный.

, Как только у меня была установка NTP в сети, которую я открыл как пять сессий VNC для различного сервера и сидел, там наблюдая часы. Часы на всем сервере были в синхронизирующих миллисекундах скручивания жгутов, и это правильно после установки. Это становится более точным, когда это работает.

8
задан Andrew Whitehouse 4 November 2009 в 18:39
поделиться

1 ответ

Замените grep на find:

html.'**'.find { it.@class == 'divclass' }.ol.li.each { linkItem ->
    def link = linkItem.h3.a.@href
    def address = linkItem.address.text()
    println "$link: $address\n"
}

тогда вы получите

#href1: Here is the addressTelephone number: telephone

#href2: Here is another addressAnother telephone: 0845 1111111

grep возвращает ArrayList, но find возвращает класс NodeChild:

println html.'**'.grep { it.@class == 'divclass' }.getClass()
println html.'**'.find { it.@class == 'divclass' }.getClass()

results in:

class java.util.ArrayList
class groovy.util.slurpersupport.NodeChild

таким образом, если вы хотите использовать команду grep, вы можете вложить еще одну, чтобы она работала

html.'**'.grep { it.@class == 'divclass' }.ol.li.each {
    it.each { linkItem ->
        def link = linkItem.h3.a.@href
        def address = linkItem.address.text()
        println "$link: $address\n"
    }
}

Короче говоря, в вашем случае используйте find, а не grep.

11
ответ дан 5 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: