首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用DOM保存为XML时停止对特殊字符进行转义

使用DOM保存为XML时停止对特殊字符进行转义
EN

Stack Overflow用户
提问于 2019-04-29 02:43:48
回答 1查看 284关注 0票数 0

有没有办法防止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();
          }
   }
EN

回答 1

Stack Overflow用户

发布于 2019-04-29 09:44:51

您可以在输出数据之前执行stringString.replaceAll("&lt;","<").replaceAll("&gt;",">")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55893462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档