0

私はここを読んでいます:http: //groovy.codehaus.org/modules/http-builder/doc/get.html

私は得ることができるようです

i)以下を使用してNekoHTMLによって解析されたXMLSlurper出力。

def http = new HTTPBuilder('http://www.google.com') 
def html = http.get( path : '/search', query : [q:'Groovy'] )

ii)以下を使用した生のテキスト:

http.get( path : '/search',
          contentType : TEXT,
          query : [q:'Groovy'] ) { resp, reader ->          
  println "response status: ${resp.statusLine}"
  println 'Headers: -----------'
  resp.headers.each { h ->
  println " ${h.name} : ${h.value}"
  }
  println 'Response data: -----'
  System.out << reader
  println '\n--------------------'
}

問題が発生しているので、(i)と(ii)の両方で、取得している実際のhtmlでXmlSlurperコードをデバッグしたいと思います

私がこれを行うためにどのように行くことができるかについての提案はありますか?

parseString(string)メソッドまたはparse(reader)メソッドを使用して、関連する文字列でXmlSlurperオブジェクトを簡単にインスタンス化できますが、Nekoの処理手順を正しく行うことができないようです。

ヒントはありますか?

ありがとうございました!ミーシャ

4

2 に答える 2

3

わかりました。

から理解:http: //groovy.codehaus.org/Testing+Web+Applications

def html=http.get(uri:'http://www.google.com',contentType:groovyx.net.http.ContentType.TEXT) { resp,reader ->
  def s=reader.text
  new File("temp.html")<<s
  new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(s)          
}

ありがとうございました!ミーシャ

于 2010-06-03T21:50:15.127 に答える
0

最初にファイルにダンプしてそこから読み取るのではなく、reader.readLines()を使用して次の実装で同じことを実現できます。

def html=http.get(uri:'http://www.google.com',contentType:groovyx.net.http.ContentType.TEXT) { resp,reader ->

  String response = (reader.readLines().join() as String)

  new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText( response)          
}
于 2021-10-13T23:00:36.730 に答える