簡體   English   中英

使用DOM保存到XML時,停止轉義特殊字符

[英]Stop escaping special characters when saving to XML with DOM

有沒有辦法阻止Java在使用DOM寫入XML時轉義特殊字符? 我無法更改XML的格式,因此我無法將它們保存在CDATA標記中。

我正在嘗試使用DOM將HTML保存在XML文件中。 目前它正在轉義特殊字符,因此<p>被保存為&lt;p&gt;

public void updateXML(Document doc) throws XPathExpressionException{
  Node aNode = getXMLNode("//PRECISSCHE.HTM/html/body", doc);
  removeChilds(aNode);
  aNode.setTextContent(saved_precis_Scheme);    
}

它輸出為:

<PRECISSCHE.HTM>
    <html>
        <body>&lt;p&gt;schemeName&lt;/p&gt;</body>
    </html>
</PRECISSCHE>

但是我需要:

<PRECISSCHE.HTM>
    <html>
        <body><p>schemeName</p></body>
    </html>
</PRECISSCHE>

這是我創建doc對象的代碼:

  //pull data and write to XML
    public void updateXML(String path) throws XPathExpressionException{
          try {                
              String filepath = path;
              DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
              docFactory.setIgnoringElementContentWhitespace(true);
              DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
              Document doc = docBuilder.parse(filepath);

              Tab_Client.updateClientXML(doc);

              if(!polType.equals("Household")){
                  Tab_Vehicle.updateVehicleXML(doc);
                  Tab_PCClaimsConv.updateXML(doc);
                  Tab_precis.updateXML(doc);
              }
              if(polType.equals("Household")){
                  Tab_PropertyDetails.updatePropertyDetailsXML(doc);
                  Tab_HCsumInsured.updateXML(doc);
                  Tab_Contents.updateXML(doc);
                  Tab_HCClaims.updateXML(doc);
              }

              TransformerFactory transformerFactory = TransformerFactory.newInstance();
              Transformer transformer = transformerFactory.newTransformer();
              DOMSource source = new DOMSource(doc);
              StreamResult result = new StreamResult(new File(filepath));
              transformer.transform(source, result);
          } catch (ParserConfigurationException pce) {
              pce.printStackTrace();
          } catch (TransformerException tfe) {
              tfe.printStackTrace();
          } catch (IOException ioe) {
              ioe.printStackTrace();
          } catch (SAXException sae) {
              sae.printStackTrace();
          }
   }

您可以在輸出數據之前執行stringString.replaceAll("&lt;","<").replaceAll("&gt;",">")

暫無
暫無

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

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