Java - 将XML Source放入另一个

时间:2014-03-15 17:00:50

标签: java xml put


嗨,

我需要把这个xml放到另一个中。 我以root身份添加标签。有人可以帮帮我吗?

请看示例:

来源:

<?xml version="1.0" encoding="UTF-8"?>
    <TBCOMPROBANTE>
       <cuitEmpresa>N11</cuitEmpresa>
       <numeroComprobante>N9</numeroComprobante>
       <nombreArchivo>A41</nombreArchivo>
       <codigoIntegridad>A50</codigoIntegridad>
       <validacionesRemitos class="list">
          <remito>
             <numeroUnico>A16</numeroUnico>
             <procesado>A2</procesado>
          </remito>
          <remito>
             <numeroUnico>A16</numeroUnico>
             <procesado>A2</procesado>
             <errores class="list">
                <error>
                   <codigo>N2</codigo>
                   <descripcion>A150</descripcion>
                </error>
             </errores>
          </remito>
       </validacionesRemitos>
    </TBCOMPROBANTE>

目标(参见新的Arba标记根)

<?xml version="1.0" encoding="UTF-8"?>
<Arba>
   <TBCOMPROBANTE>
      <cuitEmpresa>N11</cuitEmpresa>
      <numeroComprobante>N9</numeroComprobante>
      <nombreArchivo>A41</nombreArchivo>
      <codigoIntegridad>A50</codigoIntegridad>
      <validacionesRemitos class="list">
         <remito>
            <numeroUnico>A16</numeroUnico>
            <procesado>A2</procesado>
         </remito>
         <remito>
            <numeroUnico>A16</numeroUnico>
            <procesado>A2</procesado>
            <errores class="list">
               <error>
                  <codigo>N2</codigo>
                  <descripcion>A150</descripcion>
               </error>
            </errores>
         </remito>
      </validacionesRemitos>
   </TBCOMPROBANTE>
</Arba>

Cerbero ---------------------------------------------- ------------------------ 感谢!!!!

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤执行此操作:

  1. 使用Java DOM Parser
  2. 解析输入文件
  3. 找到感兴趣的节点
  4. 使用新节点
  5. 创建新文档
  6. 从第一个文档复制节点并将其添加为新节点的子节点
  7. 最后,将新文档写入文件
  8. 这是我的示例代码

    import java.io.File;
    
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    public class XMLWrapper {
    
        public static void main(final String[] args) throws Exception {
            final File inputFile = new File(
                    "/Users/richard/Documents/workspace/so/input.xml");
            final File outputFile = new File(
                    "/Users/richard/Documents/workspace/so/output.xml");
    
            // Read in the file using the DOM parser
            final DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            final Document document = factory.newDocumentBuilder().parse(inputFile);
    
            // Find the TBCOMPROBANTE node
            final NodeList childNodes = document
                    .getElementsByTagName("TBCOMPROBANTE");
            final Node chosenNode = childNodes.item(0);
    
            // Create a new document and add the extra node
            final Document newDocument = factory.newDocumentBuilder().newDocument();
            final Element createElement = newDocument.createElement("Arba");
            newDocument.appendChild(createElement);
    
            // Import the node we found and append it to the new element
            final Node importNode = newDocument.importNode(chosenNode, true);
            createElement.appendChild(importNode);
            newDocument.normalize();
    
            // Use a Transformer to write the xml to outputFile
            final TransformerFactory tFactory = TransformerFactory.newInstance();
            final Transformer transformer = tFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            final DOMSource source = new DOMSource(newDocument);
            final StreamResult result = new StreamResult(outputFile);
            transformer.transform(source, result);
    
        }
    }