我正在开发一个程序,在该程序中我将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[]变量中,因为我将在程序中对其进行修改。任何想法?
2 回答
![?](http://img1.sycdn.imooc.com/54584f850001c0bc02200220-100-100.jpg)
12345678_0001
TA贡献1802条经验 获得超5个赞
您已阅读的InputStream不是包含所做修改的对象。您所做的修改在Document对象内部。
这就是您需要发送到OutputStream的内容。
![?](http://img1.sycdn.imooc.com/54584e2c00010a2c02200220-100-100.jpg)
撒科打诨
TA贡献1934条经验 获得超2个赞
正如你们中的一些人告诉我的那样,我犯了一个愚蠢的错误。我要做的就是将Documento传递给OutputStream。我用下一段代码来做到这一点:
XMLOutputter xmlcode = new XMLOutputter();
xmlcode.output(document, xmlSalida);
感谢你的帮助!
添加回答
举报
0/150
提交
取消