1

我有一个采用 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>

4

1 回答 1

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>
于 2017-09-12T22:57:28.287 回答