Java:将字符串转换为文档(W3C),而不解码数字字符引用

Java:将字符串转换为文档(W3C),而不解码数字字符引用,java,xml,ncr,Java,Xml,Ncr,当我将字符串格式的XML转换为文档时,所有具有数字字符引用(NCR)值的节点值都将解码为人类可读的值 我希望在输出中接收完全相同的XML(不解码NCR)。期望输出为: "<urn:Root xmlns:urn=\"http://my.test.com/ABC\"><urn:Status type=\"\">&#1042; &#1088;&#1072;&#1073;&#1086;&#1090;&#1077;</u

当我将字符串格式的XML转换为文档时,所有具有数字字符引用(NCR)值的节点值都将解码为人类可读的值

我希望在输出中接收完全相同的XML(不解码NCR)。期望输出为:

"<urn:Root xmlns:urn=\"http://my.test.com/ABC\"><urn:Status type=\"\">&#1042; &#1088;&#1072;&#1073;&#1086;&#1090;&#1077;</urn:Status></urn:Root>"
“В;р;а;б;о;т;е;”
但我得到:

"<urn:Root xmlns:urn=\"http://my.test.com/ABC\"><urn:Status type=\"\">В работе</urn:Status></urn:Root>"
“ааааа
例如:

publicstaticvoidmain(字符串[]args){
字符串xml=“В;р;а;б;о;т;е;”;
System.out.println(xml);
System.out.println(convertStringToXMLDocument(xml));
} 
公共静态字符串convertStringToXMLDocument(字符串xml){
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
setIgnoringElementContentWhitespace(true);
factory.setExpandEntityReferences(假);
DocumentBuilder=null;
try(InputStream s=newbytearrayinputstream(xml.getBytes())){
builder=factory.newDocumentBuilder();
文档doc=builder.parse;
返回convertXMLDocumentToString(文档);
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
公共静态字符串convertXMLDocumentToString(文档xmlDocument){
TransformerFactory=TransformerFactory.newInstance();
变压器;
试一试{
变压器=工厂新变压器();
setOutputProperty(OutputKeys.OMIT_XML_声明,“yes”);
StringWriter编写器=新的StringWriter();
transform(新的DOMSource(xmlDocument)、新的StreamResult(writer));
返回writer.getBuffer().toString();
}捕获(转换异常e){
e、 printStackTrace();
}
返回null;
}
public static void main(String[] args) {
    String xml = "<urn:Root xmlns:urn=\"http://my.test.com/ABC\"><urn:Status type=\"\">&#1042; &#1088;&#1072;&#1073;&#1086;&#1090;&#1077;</urn:Status></urn:Root>";
    System.out.println(xml);
    System.out.println(convertStringToXMLDocument(xml));
} 


public static String convertStringToXMLDocument(String xml) {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setIgnoringElementContentWhitespace(true);
    factory.setExpandEntityReferences(false);
    DocumentBuilder builder = null;


    try(InputStream s = new ByteArrayInputStream(xml.getBytes())) {
        builder = factory.newDocumentBuilder();
        Document doc = builder.parse(s);
        return convertXMLDocumentToString(doc);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}


public static String convertXMLDocumentToString(Document xmlDocument) {
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer;
    try {
        transformer = factory.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        StringWriter writer = new StringWriter();
        transformer.transform(new DOMSource(xmlDocument), new StreamResult(writer));
        return writer.getBuffer().toString();
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    return null;
}