Преобразование с помощью XSLT в службе Grails - PullRequest
0 голосов
/ 02 ноября 2010

Я хотел бы написать сервис в своем веб-приложении grails, чтобы применить xslt к некоторому xml. Следующий код выдает java.lang.ArrayIndexOutOfBoundsException: -1 :

import javax.xml.transform.TransformerFactory
import javax.xml.transform.Transformer
import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource

class RdfService {

    static transactional = false

 def transform(url){
  def String wsdl= url.toString().toURL().text
  def File xslt= new File("lib/SAWSDL_GRDDL.xsl")
  def TransformerFactory factory = TransformerFactory.newInstance()
  def Transformer transformer = factory.newTransformer(new StreamSource(new FileReader(xslt)))
  def StringWriter out= new StringWriter()
  transformer.transform(new StreamSource(new StringReader(wsdl)), new StreamResult(out))
  println out
 }
}

Однако, когда я тестирую следующий аналогичный код с теми же значениями, я получаю желаемые результаты:

import javax.xml.transform.TransformerFactory
import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource



def xml= new File("data/wsdl/EtaService.wsdl").text
def xslt= new File("data/SAWSDL_GRDDL.xsl")
def factory = TransformerFactory.newInstance()
def transformer = factory.newTransformer(new StreamSource(new FileReader(xslt)))
def out= new StringWriter()
transformer.transform( new StreamSource(new StringReader(xml)), 
        new StreamResult(out))
println out

Мой код изначально стремился быть немного более эффективным, но на данный момент я просто пытаюсь заставить его работать: -)

1 Ответ

0 голосов
/ 02 ноября 2010

это был взлом, но я узнал, что если я удалю тег XML, в документе он будет обрабатываться соответствующим образом.

wsdl = wsdl.replace('<?xml version="1.0" encoding="UTF-8"?>', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...