2017-09-12 5 views
1

문서를 사용하고 XML 문자열 값을 생성하는 메소드가 있습니다. 공백, 탭 및 다른 문자가 그대로 노드 값에 그대로 유지된다는 점을 제외하고는 정상적으로 작동합니다. 나는 그것들을 16 진수 값으로 변환 할 필요가있다. 이 String으로 변환됩니다으로Java에서 XML 문서를 16 진수 데이터로 인쇄 할 수없는 문자로 변환해야합니다.

값이 육각 형태로 문서에 입력 한 경우에도
public static String docToXML(Document doc) 
{ 
    try 
    { 
     StringWriter sw = new StringWriter(); 
     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer = tf.newTransformer(); 
     transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
     transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
     transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 

     transformer.transform(new DOMSource(doc), new StreamResult(sw)); 
     return sw.toString(); 
    } 
    catch (Exception ex) 
    { 
     throw new RuntimeException("Error converting to String", ex); 
    }  
} 

,이 공백이나 탭으로 변환됩니다

여기에 내가 가지고있는 방법이다.

아무도 이런 일이 발생하는 방법을 알고 있습니까? 출력 속성이라고 가정하고 있지만 찾지 못했습니다.

편집 :

<MyField> </MyField>

원하는 동작은 다음과 같습니다 :

현재 동작 (공간에 대한)이 같은 것입니다

<MyField>&#x20;</MyField>

+2

CURRENT 동작의 샘플 입력 및 샘플 출력과 DESIRED 동작의 또 다른 샘플을 제공 할 수 있습니까? – Freiheit

+0

인쇄 할 수없는 문자를 16 진수 문자로 인코딩 하시겠습니까? 즉, 공간은 ' '입니다. – erickson

+0

예, 그게 내가 원하는 것입니다. 방금 게시물을 편집하여 내용을 분명히했습니다. –

답변

0

XSLT 2.0을 사용하면 이를 달성하기 위해 문자지도를 사용할 수 있습니다 :

<xsl:character-map> 
    <xsl:output-character character=" " string="&amp;#x20;"/> 
    <xsl:output-character character="&#9;" string="&amp;#x09;"/> 
    ... 
</xsl:character-map>