Sto provando a creare un webservice RESTful utilizzando un servlet Java. Il problema è che devo passare tramite un metodo POST a una richiesta di un server web. Il contenuto di questa richiesta non è un parametro ma il corpo stesso.Utilizzo di una stringa all'interno del metodo di analisi DocumentBuilder (necessario per l'analisi XML utilizzando XPath)
Così ho praticamente inviare dal rubino qualcosa di simile:
url = URI.parse(@host)
req = Net::HTTP::Post.new('/WebService/WebServiceServlet')
req['Content-Type'] = "text/xml"
# req.basic_auth 'account', 'password'
req.body = data
response = Net::HTTP.start(url.host, url.port){ |http| puts http.request(req).body }
allora devo recuperare il corpo di questa richiesta nel mio servlet. Io uso la lettura classica, quindi ho una stringa. Il problema è quando devo analizzare come XML:
private void useXML(final String soft, final PrintWriter out) throws ParserConfigurationException, SAXException, IOException, XPathExpressionException, FileNotFoundException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); // never forget this!
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(soft);
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//software/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
out.println(nodes.item(i).getNodeValue());
}
}
Il problema è che builder.parse()
accetta: parse(File f)
, parse(InputSource is)
, parse(InputStream is)
.
C'è un modo per trasformare la mia stringa xml in un InputSource o qualcosa del genere? So che potrebbe essere una domanda falsa, ma Java non è il mio genere, sono costretto a usarlo e non sono molto abile.
Grazie Dimitre per l'editing. Mi sto abituando a questo codice di formato. – dierre
Puoi pubblicare esempi di codice XML che funzionano con questo codice? Sto lavorando su un progetto simile e il mio nodo, dopo che la query xpath sta tornando null, quindi sospetto che la mia espressione xpath o il mio xml non sia ben formato. – mobibob