修改InputStream并将其转换为Outputstream

我正在开发一个程序,在该程序中我将XML文件作为InputStream接收。我必须进行一些更改,然后将其作为OutputStream返回。


这是我的代码:


public void execute (InputStream xmlEntrada, OutputStream xmlSalida) {


    SAXBuilder saxBuilder = new SAXBuilder();

    Document document;


    String idDocCobro, idCobro;

    String sociedad, ejercicio, numDocCobro;


    try {


        document = saxBuilder.build(xmlEntrada);


        Element raiz = document.getRootElement();


        List piDocCobros = raiz.getChildren("Pagos");


        for (int i = 0; i < piDocCobros.size(); i++) {


               Element nodePiDocCobros = (Element) piDocCobros.get(i);


               sociedad = nodePiDocCobros.getChildText("Sociedad");

               ejercicio = nodePiDocCobros.getChildText("Ejercicio");

               numDocCobro = nodePiDocCobros.getChildText("NumDocumentoCobro");


               idDocCobro = sociedad + ejercicio + numDocCobro + System.currentTimeMillis();


               nodePiDocCobros.getChild("iddoccobro").setText(idDocCobro);


               List piCobros = nodePiDocCobros.getChildren("Pago");


               for (int y = 0; y < piCobros.size(); y++) {


                   Element nodePiCobros = (Element) piCobros.get(y);


                   nodePiCobros.getChild("iddoccobro").setText(idDocCobro);


                   idCobro = numDocCobro + System.currentTimeMillis();


                   nodePiCobros.getChild("idcobro").setText(idCobro);


                   List piDocumentosRel = nodePiCobros.getChild("DocumentosRelacionados").getChildren("DocumentoRelacionado");


                   for (int z = 0; z < piDocumentosRel.size(); z++) {


                       Element nodePiDocumentosRel = (Element) piDocumentosRel.get(z);


                       nodePiDocumentosRel.getChild("idcobro").setText(idCobro);


                   }


               }

        }  

我的问题是当我尝试读取函数中的XML时,copy因为流已经关闭,所以我得到了异常。当我saxBuilder.build在程序开始时使用句子时,流自身关闭。我之前无法将文本保存在byte[]变量中,因为我将在程序中对其进行修改。


任何想法?


长风秋雁
浏览 378回答 2
2回答

12345678_0001

您已阅读的InputStream不是包含所做修改的对象。您所做的修改在Document对象内部。这就是您需要发送到OutputStream的内容。

撒科打诨

正如你们中的一些人告诉我的那样,我犯了一个愚蠢的错误。我要做的就是将Documento传递给OutputStream。我用下一段代码来做到这一点:XMLOutputter xmlcode = new XMLOutputter();xmlcode.output(document, xmlSalida);感谢你的帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java