2013-02-15 31 views
1

我在Java中創建了一個創建RDF/XML-ABBREV模型的sevlet。我的問題是,響應不包含xml版本標記。RDF + XML響應 - 缺少xml版本標記

電流響應:

<rdf:RDF 
    xmlns:myNS="http://www.sap.de/research/BusinessObjectOntology#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 
    <myNS:Resource rdf:about="http://localhost/myResource"> 
    ... 
    </myNS:Resource> 
</rdf:RDF> 

,但我需要<?xml version="1.0"?>在我的模型的開始。 我是否必須向我的代碼添加某些內容,或者爲什麼xml版本標記不顯示?

resp.setCharacterEncoding(CHARSET); 
resp.setContentType("application/rdf+xml"); 
resp.setStatus(HttpStatus.OK_200); 
model.write(resp.getWriter(), "RDF/XML-ABBREV"); 

感謝

回答

2

的聲明是可選的,但你可以要求它。

根據the XML writer documentation

當被問及寫入使用除UTF-8或UTF-16等一些編碼的OutputStreamWriter默認行爲只給出了一個XML聲明。

自定義輸出的嘗試:

... 
RDFWriter writer = model.getWriter("RDF/XML-ABBREV"); 
writer.setProperty("showXmlDeclaration","true"); 
writer.write(model, resp.getWriter(), null);