2011-07-19 6 views
1

私はRestletフレームワークを使用しており、DomRepresentationを使用してXMLを返すWebサービスを作成しています。私もTEXT_XMLを試してみましたjava.io.IOException:...有効なチャンクサイズである

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; 
    } 
    } 

、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) 

、XMLSのほとんどが正しく解析されています

たびに、私は、このエラーメッセージが表示されました。なぜ、正しく解析されないXMLが1つあるのかわかりませんが、このXMLの最後にもう1つの ">"があります。

非常に参考になるアイディアです。

ありがとうございます!ここで Ikeforward

+0

最後に余分なものを取り除こうとしましたが、どうなりますか? – ant

+0

失敗したXMLソースをエラーログにルーティングしてください。 –

答えて

0

は、ログファイルにあなたの.xmlをログに記録する提案の草稿です:

log4j.properties:

# Define the root logger with appender file 
log4j.rootLogger = DEBUG, FILE 
# Define the file appender 
log4j.appender.FILE=org.apache.log4j.FileAppender 
# Set the name of the file 
log4j.appender.FILE.File=${log}/log.out  
# Set the immediate flush to true (default) 
log4j.appender.FILE.ImmediateFlush=true  
# Set the threshold to debug mode 
log4j.appender.FILE.Threshold=debug  
# Set the append to false, overwrite 
log4j.appender.FILE.Append=false  
# Define the layout for file appender 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.conversionPattern=%m%n 

そこで、このようないくつかのJavaコード:

import org.apache.log4j.Logger; 
...   
    public void logTheXML(String[] args) { 
     String xmlstring = arg[0]; 
     Logger logger =Logger.getLogger("FILE"); 
     logger.info("xml data\n" + xmlstring + "\n"); 
    } 
} 
関連する問題