保留逃脱性格[" <等。复制XML节点时 - Java

时间:2014-05-15 20:59:14

标签: java xml

我通过复制源XML内容来创建目标XML。我在节点级别进行复制。 源XML具有带转义字符的内容,该字符被转换为[$ quot;到"等...当我创建我的目标XML

有没有办法保留原始XML内容。

感谢您的任何帮助。

   copyXmlFile("Workflow", "./Source.xml", "./Destination.xml");

   private static void copyXmlFile(String xmlType, String objectSourceFile, String outfile) throws TransformerException {
          //Get the DOM Builder Factory
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          //Get the DOM Builder
          DocumentBuilder builder = null;
          try {
                 builder = factory.newDocumentBuilder();
          } catch (ParserConfigurationException e) {
                 e.printStackTrace();
          }

          //document contains the complete XML as a Tree.
          try {
                 File xmlFileContent = new File(objectSourceFile);
                 Document document = builder.parse(new FileInputStream(xmlFileContent));

                 // root elements
                 Document documentOut = builder.newDocument();
                 Element rootElementOut = documentOut.createElement(xmlType);
                 rootElementOut.setAttribute("xmlns", "http://soap.sforce.com/2006/04/metadata");
                 documentOut.appendChild(rootElementOut);

                 NodeList nodeList = document.getDocumentElement().getChildNodes();
                 for (int i = 0; i < nodeList.getLength(); i++) {
                       Node node = nodeList.item(i);
                       if (node instanceof Element) {    
                              //Node copiedNode = documentOut.importNode(node, true);
                           //rootElementOut.appendChild(copiedNode);
                           rootElementOut.appendChild(documentOut.adoptNode(node.cloneNode(true)));
                       }
                 }

                 // write the content into xml file
                 TransformerFactory transformerFactory = TransformerFactory.newInstance();
                 Transformer transformer = transformerFactory.newTransformer();
                 DOMSource source = new DOMSource(documentOut);
                 //StreamResult result = new StreamResult(new File(outfile));

                 StringWriter writer = new StringWriter();
                 StreamResult result = new StreamResult(writer);

                 transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                 //transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                 //transformer.setOutputProperty(OutputKeys.METHOD, "xml");
                 //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
                 transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
                 transformer.transform(source, result);

                 System.out.println("Escaped XML String in Java: " +  writer.toString());

          } catch (SAXException | IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
          }
   }      }

0 个答案:

没有答案