Linux - Crear XML desde un txt para e-FACT

   
Vista:
Imágen de perfil de barna_rasta

Crear XML desde un txt para e-FACT

Publicado por barna_rasta (146 intervenciones) el 17/01/2015 11:47:45
Buenos dias,
tengo un cliente que se ve en la necesidad de emitir factura electronica en formato e.FACT a las administraciones publicas ESPAÑOLAS, gogleando encontre el formato del XML, y necesitaria saber si alguien conoce la forma
de generar el XLM importando los datos desde un fichero TXT que es el formato que la gestion de facturacion puede exportar.
La idea seria seleccionar los datos a incorporar al TXT y posteriormente tratarlo desde PHP, PERL, PYTHON, ....
para conseguir el XML.

La documentacion que encontre es la siguiente:
http://www.facturae.gob.es/formato/ultimaversion/B%29%20Versi%C3%B3n%203.2/factura_ejemplo2_32v1.xml
http://www.facturae.gob.es/formato/ultimaversion/B%29%20Versi%C3%B3n%203.2/Esquema_castellano_v3_2.pdf


Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Crear XML desde un txt para e-FACT

Publicado por Tom (339 intervenciones) el 17/01/2015 12:56:12
Yo lo haría en java, es bastante sencillo, sobre todo si usas jdom. Siempre y cuando, tengas en el txt todos los datos que necesitas para facturae, claro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de barna_rasta

Crear XML desde un txt para e-FACT

Publicado por barna_rasta (146 intervenciones) el 17/01/2015 20:02:33
Gracias Tom,
pero aqui que me mataste!!! :)
jamas use JAVA para nada :(
me podrias facilitar alguna documentacion o ejemplillo sencillo, asi le podria ir tirando un ojo mientras pienso en
alguna solucion.

Por el momento pense en ir leyendo el txt ==> adaptar los campos y orden necesario para XML
y con print mandarlo al archivo de salida.
Lo que observo es que no consigo las tabulaciones clasicas del XML, sabes si es importante?

Por el momento (solo un trozo) esta quedando asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<fe:Facturae xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:fe="http://www.facturae.es/Facturae/2009/v3.2/Facturae">
<FileHeader>
<SchemaVersion>3.2</SchemaVersion>
<Modality>I</Modality>
<InvoiceIssuerType>EM</InvoiceIssuerType>
<Batch>
<BatchIdentifier>743532 </BatchIdentifier>
<InvoicesCount>1</InvoicesCount>
<TotalInvoicesAmount>
<TotalAmount>       831.14</TotalAmount>
</TotalInvoicesAmount>
<TotalOutstandingAmount>
<TotalAmount>831.14      </TotalAmount>
</TotalOutstandingAmount>
<TotalExecutableAmount>
<TotalAmount>831.14      </TotalAmount>
</TotalExecutableAmount>
<InvoiceCurrencyCode>EUR</InvoiceCurrencyCode>
</Batch>
</FileHeader>
</fe:Facturae>

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear XML desde un txt para e-FACT

Publicado por Tom (339 intervenciones) el 19/01/2015 14:41:48
No, el tabulado para indentación no es para nada importante. También es fácil de conseguir una salida "bonita" con jdom, o con Java8.
Dame algo de tiempo para buscar a ver si tengo algun ejemplillo que te oriente ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear XML desde un txt para e-FACT

Publicado por Tom (339 intervenciones) el 19/01/2015 15:22:52
Bueno, no encuentro nada hecho, pero para que te hagas una idea he creado este código chapucerillo pero funcional que convierte a xml el fichero /etc/passwd (seguro que tienes alguno a mano). En java, también empieza todo en el método main :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
 
/** */
public class TxtToXml {
	/* */
	static Element	newUser(String name) {
		return new Element("User").setAttribute("Name", name);
	}
	/* */
	static void setUserPwd(Element user, String value) {
		Element e = new Element("HasShadow");
		if(value == null) {
			e.setText("false");
		} else {
			e.setText("true");
		}
		user.addContent(e);
	}
	/* */
	static void setUserUid(Element user, int id) {
		user.addContent(new Element("UID").setText(Integer.toString(id)));
	}
	/* */
	static void setUserGid(Element user, int id) {
		user.addContent(new Element("GID").setText(Integer.toString(id)));
	}
	/* */
	static void setUserHome(Element user, String value) {
		user.addContent(new Element("HomeDir").setText(value));
	}
	/* */
	static void setUserComment(Element user, String value) {
		if(value != null) {
			user.addContent(new Element("Comment").setText(value));
		}
	}
	/* */
	public static void main(String args[]) throws IOException {
		Scanner sc = new Scanner(new File("/etc/passwd"));
		Element		root = new Element("Users");	// Root xml node
		Document	doc = new Document(root);
 
		sc.useDelimiter(":");
		while(sc.hasNextLine()) {
			String userName = sc.next();
			String hasShadow = sc.next();
			int uid = sc.nextInt();
			int gid = sc.nextInt();
			String	comment = sc.next();
			String	home = sc.next();
			String	shell = sc.next();
			/* Fill in dom tree */
			Element user = newUser(userName);
			root.addContent(user);
 
			setUserUid(user, uid);
			setUserGid(user, gid);
			setUserComment(user, comment);
			setUserHome(user, home);
 
			sc.nextLine();
		}
		sc.close();
		/* Output dom document */
		XMLOutputter xout = new XMLOutputter(Format.getPrettyFormat());
		xout.output(doc, System.out);	// Output on standard out
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de barna_rasta

Crear XML desde un txt para e-FACT

Publicado por barna_rasta (146 intervenciones) el 19/01/2015 23:53:14
Muy agradecido TOM,
antes de meterme en JAVA miro de acabar con el tratamiento con los print's y mirare de llevarlo a la AOC a validarlo,
----- encontre un identador(creo se llama asi) para que me haga las tabulaciones tipicas de XML ==> xmllint.

Si quemo la posibilidad con este sistema tendre que buscar otras soluciones y la de tocar algo de JAVA no me disgusta.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear XML desde un txt para e-FACT

Publicado por Tom (339 intervenciones) el 20/01/2015 14:40:59
OK, pero no te agobies con la tabulación. Un documento XML no tiene por qué contener, ni siquiera, saltos de línea.
O sea un chorizo de 1 MB en una única línea es perfectamente válido :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar