Я использую фреймворк Restlet и создаю веб-сервис для возврата XML с помощью DomRepresentation.Вот код:
public Representation toXml(Hashtale theHashtable)
{
try
{
DomRepresentation aDomRepresentation = new DomRepresentation( MediaType.APPLICATION_XML );
Document aDocument = aDomRepresentation.getDocument();
Element aElementRoot = aDocument.createElement("root");
aDocument.appendChild(aElementRoot);
Element aElementProperties =
aDocument.createElement("properties");
aElementRoot.appendChild(aElementProperties);
// Add nodes to the element
aDocument.normalizeDocument();
return aDomRepresentation;
}
catch (Exception aException)
{
return null;
}
}
Я также попробовал TEXT_XML, APPLICATION_W3C_SCHEMA MediaType.
На стороне клиента Restlet я использую следующий фрагмент кода для получения и анализа XML:
InputSource aInputSource = new InputSource(getResponseEntity().getStream());
XMLReader aXmlReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
HtHandler ahtHandler = new HtHandler();
aXmlReader.setContentHandler(ahtHandler);
aXmlReader.parse(aInputSource);
return ahtHandler.getResult();
HtHandler - это класс, расширяющий DefaultHandler.
Каждый раз, когда я получаю это сообщение об ошибке:
java.io.IOException: <encoding="UTF-8" standalone="no"?><root><properties><workflow_id>0</workflow_id><name>name</name><id>1</id></properties></root>> is an invalid chunk size
at org.restlet.engine.http.io.ChunkedInputStream.readChunkSize(ChunkedInputStream.java:232)
at org.restlet.engine.http.io.ChunkedInputStream.initializeChunk(ChunkedInputStream.java:161)
at org.restlet.engine.http.io.ChunkedInputStream.canRead(ChunkedInputStream.java:97)
at org.restlet.engine.http.io.ChunkedInputStream.read(ChunkedInputStream.java:182)
Я проверил, большинство XML-файловразбираются правильно.Я не знаю почему, всегда есть один XML, который не анализируется правильно, у этого XML есть еще один «>» в конце.
Любые идеи будут очень полезны!
Спасибозаблаговременно!Ikeforward