簡體   English   中英

防止transformer.transform( source, result ) 轉義特殊字符

[英]Prevent transformer.transform( source, result ) from escaping special character

我正在使用 DOM 解析器更新 xml 的節點和文本內容。 為了保存那個 DOM 解析器,我使用了 Transformer.transform 方法。 下面是示例代碼。

String xmlText = "<uc>abcd><name>mine</name>efgh\netg<tag>sd</tag></uc>";
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        InputSource inStream = new InputSource();
        inStream.setCharacterStream(new StringReader(xmlText));
        Document document = documentBuilder.parse(inStream);
        Node node = document.getDocumentElement();      
        node.normalize();
        NodeList childNodes = node.getChildNodes();
        for(int i=0; i<childNodes.getLength(); i++) {
            if(childNodes.item(i).getNodeType() == Node.TEXT_NODE) {
                System.out.println(childNodes.item(i).getTextContent());
                childNodes.item(i).setTextContent("123>");
            }
        }
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        transformer.setOutputProperty(OutputKeys.ENCODING, "US-ASCII");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        DOMSource source = new DOMSource( document );
        OutputStream xml = new ByteArrayOutputStream();
        StreamResult result = new StreamResult( xml  );

        transformer.transform( source, result );
        String formattedXml = xml.toString();
        System.out.println(formattedXml);

由於我更新的文檔有像“>”這樣的文本內容,transformer.transform 方法將其更改為 &g t; 有沒有辦法在不轉義特殊字符的情況下獲得輸出。 由於某些項目限制,我無法使用其他解析器。 我不能使用 StringEscapeUtils.unescapeXml()。 原因是 xml 可以有 &g t;。 如果我使用這種實用方法,&g t; 最初存在於 xml 中的內容也將被更改。 所以我想要一種不會逃避任何特殊字符的機制。

您創建的變壓器

Transformer transformer = tFactory.newTransformer();

使用實現身份轉換的默認樣式表進行初始化。 這意味着它將簡單地將您的 DOM 序列化為格式良好的 XML 文檔。 必要時自動應用輸出轉義。

如果您想要更好地控制輸出,並且可能生成不符合 XML 文檔結構的內容,您可以使用將輸出方法切換為文本的自定義樣式表。 通過這種方式,您可以控制更多的結構,但可能會在 XML 區域中犯更多錯誤。

更多信息請訪問

暫無
暫無

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

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