簡體   English   中英

在Java中,我需要將XML文檔轉換為字符串,數據中的不可打印字符為十六進制

[英]In Java I need to convert an XML Document to a string, with non-printable characters in data as hex

我有一個采用Document並產生XML String值的方法。 除了在節點值中按原樣保留空格,制表符和其他類似字符外,它工作正常。 我需要將它們轉換為等效的十六進制。

這是我的方法:

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>

使用XSLT 2.0,您可以使用字符映射來實現此目的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM