2012-12-01 2 views
0

groovy에서 다음 코드를 컴파일하는 데 문제가 있습니다.Groovy Shell을 읽는 방법 # 기호

String execute(Document doc){ 

    CompilerConfiguration configuration = new CompilerConfiguration() 
    configuration.setSourceEncoding("UTF-8") 

    binding = new Binding(); 
    binding.setVariable("doc", doc) 

    shell = new GroovyShell(binding, configuration) 

    String clipping = shell.evaluate("doc."+jsoupExpression+".text()") 

    return clipping 

}

이 내가 이런 내 함수를 호출 할 때 실행해야합니다 것입니다 :

| Failure: testExecute(com.threefact.scrapetastic.RuleTests) 
| org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
Script1.groovy: 1: unexpected char: '#' @ line 1, column 15. 
    doc.select(div#unten div h2).get(1).text() 
       ^
1 error 

나는이를 봤 : 내가 얻을 것은이 예외

//Use a document from test/resources as input 
Document doc = Jsoup.parse(new File("test/resources/online.html"), "UTF-8") 

//This is what gets passed as jsoupExpression 
Rule r = new Rule("select(div#unten div h2).get(1)") 

String result = r.execute(doc) 

예외가 있지만이 문제를 해결하는 방법을 생각해 낼 수는 없습니다. 어쩌면 누군가 이미 비슷한 상황을 경험했으며이를 통해 나를 도울 수 있습니다.

감사합니다. 규칙을 분리 할 때

Rule r = new Rule("select(div#unten div h2).get(1)") 

, 당신은이 프로그램을 얻을 :

답변

1

문제는이 라인

select(div#unten div h2).get(1) 

난 당신이 select에 문자열 인수를 전달하고자하는 생각을, 그래서 이것은 것 이것은 Rule r 광고 SHO 수단

select("div#unten div h2").get(1) 

: 올바른 프로그램 될 uld는 다음과 같이 작성하십시오 :

Rule r = new Rule("select(\"div#unten div h2\").get(1)") 
+0

답장을 보내 주셔서 감사합니다. – evermean