¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Solución al error No se puede mostrar la vista de árbol; Error al analizar un documento XML (Fin prematuro del archivo.) al convertir archivo XL a XML en Java

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 151 Vistas
0
Cargando...

Hola a todos,

Estoy trabajando en un mapeo de Java que lee un archivo XL y lo convierte a XML. Funcionaba bien cuando lo probaba en Eclipse, pero al probarlo en el mapeo operacional mostraba "No se puede mostrar la vista de árbol; Error al analizar un documento XML (Fin prematuro del archivo.)". Por favor, ayúdenme.

Por favor, revisen el código a continuación:

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

import com.sap.aii.mapping.api.AbstractTransformation;

import com.sap.aii.mapping.api.StreamTransformationException;

import com.sap.aii.mapping.api.TransformationInput;

import com.sap.aii.mapping.api.TransformationOutput;

public class Xml_convert extends AbstractTransformation {

public boolean generateXML(File excelFile) {

try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.newDocument();

Element catalogElement = document.createElement("document");

document.appendChild(catalogElement);

InputStream input = new FileInputStream(excelFile);

HSSFWorkbook workbook = new HSSFWorkbook(input);

HSSFSheet spreadsheet = workbook.getSheetAt(0);

System.out.println("Número de filas =" + spreadsheet.getLastRowNum());

for (int i = 1; i <= spreadsheet.getLastRowNum(); i++) {

HSSFRow row = spreadsheet.getRow(i);

Element journalElement = document.createElement("Element");

catalogElement.appendChild(journalElement);

Element nameElement = document.createElement("name");

journalElement.appendChild(nameElement);

nameElement.appendChild(document.createTextNode(row.getCell((short) 0).toString()));

Element idElement = document.createElement("id");

journalElement.appendChild(idElement);

idElement.appendChild(document.createTextNode(row.getCell((short) 1).toString()));

Element desgElement = document.createElement("desg");

journalElement.appendChild(desgElement);

desgElement.appendChild(document.createTextNode(row.getCell((short) 2).toString()));

}

TransformerFactory tFactory = TransformerFactory.newInstance();

Transformer transformer = tFactory.newTransformer();

DOMSource source = new DOMSource(document);

StreamResult result = new StreamResult(new File("C:\\file.xml"));

transformer.transform(source, result);

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse("");

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

public void gettingText(Document doc) {

XMl xml = new XMl();

Element root = doc.getDocumentElement();

NodeList nodeList = doc.getElementsByTagName("Element");

for (int i = 0; i < nodeList.getLength(); i++) {

Node node = nodeList.item(i);

if (node.getNodeType() == Node.ELEMENT_NODE) {

Element element = (Element) node;

NodeList nodelist = element.getElementsByTagName("name");

Element element1 = (Element) nodelist.item(0);

NodeList name = element1.getChildNodes();

System.out.println("Nombre : " + (name.item(0)).getNodeValue());

xml.setName((name.item(0)).getNodeValue()); // Para recuperar

// texto del

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Anusha,

Un problema con el código es:

Necesitas trabajar con objetos inputstream y outputstream en el mapeo de operaciones de PI y no como se muestra arriba. Este código es para un programa independiente ejecutable en eclipse o cualquier otro editor de Java pero no en PI.

¡Espero que te ayude!

Ambrish

pastedImage_0.png
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

al crear el proyecto, dale java 1.5 y funcionará.

Saludos,

Loordh

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola a todos,

Modifiqué el código de esta manera, pero al mapear operativamente estaba obteniendo un error de versión. ¿Estaba usando la versión Jdk 6.1 y esa fue la razón de este error?

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.SAXException;

import com.sap.aii.mapping.api.AbstractTransformation;

import com.sap.aii.mapping.api.StreamTransformationException;

import com.sap.aii.mapping.api.TransformationInput;

import com.sap.aii.mapping.api.TransformationOutput;

public class Xml_convert extends AbstractTransformation {

public boolean generateXML(InputStream inputStream, OutputStream outputStream) {

try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.newDocument();

Element catalogElement = document.createElement("document");

document.appendChild(catalogElement);

InputStream input = inputStream;

HSSFWorkbook workbook = new HSSFWorkbook(input);

HSSFSheet spreadsheet = workbook.getSheetAt(0);

System.out.println("Número de filas =" + spreadsheet.getLastRowNum());

for (int i = 1; i <= spreadsheet.getLastRowNum(); i++) {

HSSFRow row = spreadsheet.getRow(i);

Element journalElement = document.createElement("Element");

catalogElement.appendChild(journalElement);

Element nameElement = document.createElement("name");

journalElement.appendChild(nameElement);

nameElement.appendChild(document.createTextNode(row.getCell((short) 0).toString()));

Element idElement = document.createElement("id");

journalElement.appendChild(idElement);

idElement.appendChild(document.createTextNode(row.getCell((short) 1).toString()));

Element desgElement = document.createElement("desg");

journalElement.appendChild(desgElement);

desgElement.appendChild(document.createTextNode(row.getCell((short) 2).toString()));

}

TransformerFactory tFactory = TransformerFactory.newInstance();

Transformer transformer = tFactory.newTransformer();

DOMSource source = new DOMSource(document);

StreamResult result = new StreamResult(outputStream);

transformer.transform(source, result);

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse("");

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

public void gettingText(Document doc) {

XMl xml = new XMl();

Element root = doc.getDocumentElement();

NodeList nodeList = doc.getElementsByTagName("Element");

for (int i = 0; i < nodeList.getLength(); i++) {

Node node = nodeList.item(i);

if (node.getNodeType() == Node.ELEMENT_NODE) {

Element element = (Element) node;

NodeList nodelist = element.getElementsByTagName("name");

Element element1 = (Element) nodelist.item(0);

NodeList name = element1.getChildNodes();

System.out.println("Nombre : " + (name.item(0)).getNodeValue());

xml.setName((name.item(0)).getNodeValue());

Element element2 = (Element) node;

NodeList nodelist1 = element2.getElementsByTagName("id");

Element element3 = (Element) nodelist1.item(0);

NodeList id = element3.getChildNodes();

System.out.println("id : " + (id.item(0)).getNodeValue());

xml.setId((id.item(0)).getNodeValue());

Element element4 = (Element) node;

NodeList nodelist2 = element4.getElementsByTagName("desg");

Element element5 = (Element) nodelist2.item(0);

NodeList desg = element5.getChildNodes();

System.out.println("desg:" + (desg.item(0)).getNodeValue());

xml.setDesg((desg.item(0)).getNodeValue());

System.out.println("Name =" + xml.getName());

System.out.println("Id =" + xml.getId());

}

}

}

public static void main(String[] argv) throws ParserConfigurationException, SAXException, IOException {

Xml_convert convert = new Xml_convert();

FileInputStream input = new FileInputStream("C:/test.xls");

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

El final prematuro del archivo ocurre normalmente si no cierras o completas correctamente las etiquetas XML. Por favor, revisa tu código y verifica si la salida generada no tiene errores de sintaxis XML. También verifica si tienes algún problema con los espacios de nombres.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?