为了账号安全,请及时绑定邮箱和手机立即绑定

修改InputStream并将其转换为Outputstream

修改InputStream并将其转换为Outputstream

长风秋雁 2021-05-01 16:07:26
我正在开发一个程序,在该程序中我将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 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您已阅读的InputStream不是包含所做修改的对象。您所做的修改在Document对象内部。

这就是您需要发送到OutputStream的内容。


查看完整回答
反对 回复 2021-05-12
?
撒科打诨

TA贡献1934条经验 获得超2个赞

正如你们中的一些人告诉我的那样,我犯了一个愚蠢的错误。我要做的就是将Documento传递给OutputStream。我用下一段代码来做到这一点:


XMLOutputter xmlcode = new XMLOutputter();

xmlcode.output(document, xmlSalida);

感谢你的帮助!


查看完整回答
反对 回复 2021-05-12
  • 2 回答
  • 0 关注
  • 377 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信