import java.util.*;
import java.io.*;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
*
* @author pianodaemon
*/
public class CadenaOrginalFromCFD{
private String nc_version;
private String nc_serie;
private String nc_folio;
private String nc_fecha;
private String nc_noAprobacion;
private String nc_anioAprobacion;
private String nc_tipoDeComprobante;
private String nc_formaDePago;
private String nc_condicionesDePago;
private String nc_subTotal;
private String nc_descuento;
private String nc_total;
private String ne_rfc;
private String ne_nombre;
private String df_calle;
private String df_noExterior;
private String df_noInterior;
private String df_colonia;
private String df_localidad;
private String df_referencia;
private String df_municipio;
private String df_estado;
private String df_pais;
private String df_codigoPostal;
private String ee_calle;
private String ee_noExterior;
private String ee_noInterior;
private String ee_colonia;
private String ee_localidad;
private String ee_referencia;
private String ee_municipio;
private String ee_estado;
private String ee_pais;
private String ee_codigoPostal;
private String nr_rfc;
private String nr_nombre;
private String nd_calle;
private String nd_noExterior;
private String nd_noInterior;
private String nd_colonia;
private String nd_localidad;
private String nd_referencia;
private String nd_municipio;
private String nd_estado;
private String nd_pais;
private String nd_codigoPostal;
private ArrayList concepto = new ArrayList();
private String nc_cantidad;
private String nc_unidad;
private String nc_noIdentificacion;
private String nc_descripcion;
private String nc_valorUnitario;
private String nc_importe;
private ArrayList retencion = new ArrayList();
private String nr_impuesto;
private String nr_importe;
private String totalImpuestosRetenidos;
private ArrayList traslado = new ArrayList();
private String nt_impuesto;
private String nt_tasa;
private String nt_importe;
private String totalImpuestosTrasladados;
private String cadenaOriginal;
private String nc_noCertificado;
public void leerxml(InputStream url){
try{
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
sp.parse(url, new parsexml() );
}
catch(ParserConfigurationException e){
System.err.println("error de parseo");
}
catch(SAXException e2){
System.err.println("error de sax: " + e2.getStackTrace());
}
catch (IOException e3) {
System.err.println("error de io: " + e3.getMessage() );
}
}
private class parsexml extends DefaultHandler {
public void startElement(String namespaceURI, String localName, String qName, Attributes atts)throws SAXException{
if ("Comprobante".equals(qName)) {
for(int i=0; i < atts.getLength(); i++){
String valor = atts.getQName(i);
if("anoAprobacion".equals(valor)){
String nc_anioAprobacion = atts.getValue(i);
set_nc_anioAprobacion(nc_anioAprobacion);
}
if("condicionesDePago".equals(valor)){
String nc_condicionesDePago = atts.getValue(i);
set_nc_condicionesDePago(nc_condicionesDePago);
}
if("descuento".equals(valor)){
String nc_descuento = atts.getValue(i);
set_nc_descuento(nc_descuento);
}
if("fecha".equals(valor)){
String nc_fecha = atts.getValue(i);
set_nc_fecha(nc_fecha);
}
if("folio".equals(valor)){
String nc_folio = atts.getValue(i);
set_nc_folio(nc_folio);
}
if("formaDePago".equals(valor)){
String nc_formaDePago = atts.getValue(i);
set_nc_formaDePago(nc_formaDePago);
}
if("noAprobacion".equals(valor)){
String nc_noAprobacion = atts.getValue(i);
set_nc_noAprobacion(nc_noAprobacion);
}
if("serie".equals(valor)){
String nc_serie = atts.getValue(i);
set_nc_serie(nc_serie);
}
if("subTotal".equals(valor)){
String nc_subTotal = atts.getValue(i);
set_nc_subTotal(nc_subTotal);
}
if("tipoDeComprobante".equals(valor)){
String nc_tipoDeComprobante = atts.getValue(i);
set_nc_tipoDeComprobante(nc_tipoDeComprobante);
}
if("total".equals(valor)){
String nc_total = atts.getValue(i);
set_nc_total(nc_total);
}
if("version".equals(valor)){
String nc_version = atts.getValue(i);
set_nc_version(nc_version);
}
if("noCertificado".equals(valor)){
set_nc_noCertificado(atts.getValue(i));
}
}
}
if ("Emisor".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("nombre".equals(valor)){
String ne_nombre = atts.getValue(i);
set_ne_nombre(ne_nombre);
}
if("rfc".equals(valor)){
String ne_rfc = atts.getValue(i);
set_ne_rfc(ne_rfc);
}
}
}
if ("DomicilioFiscal".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("calle".equals(valor)){
String df_calle = atts.getValue(i);
set_df_calle(df_calle);
}
if("codigoPostal".equals(valor)){
String df_codigoPostal = atts.getValue(i);
set_df_codigoPostal(df_codigoPostal);
}
if("colonia".equals(valor)){
String df_colonia = atts.getValue(i);
set_df_colonia(df_colonia);
}
if("estado".equals(valor)){
String df_estado = atts.getValue(i);
set_df_estado(df_estado);
}
if("localidad".equals(valor)){
String df_localidad = atts.getValue(i);
set_df_localidad(df_localidad);
}
if("municipio".equals(valor)){
String df_municipio = atts.getValue(i);
set_df_municipio(df_municipio);
}
if("noExterior".equals(valor)){
String df_noExterior = atts.getValue(i);
set_df_noExterior(df_noExterior);
}
if("noInterior".equals(valor)){
String df_noInterior = atts.getValue(i);
set_df_noInterior(df_noInterior);
}
if("pais".equals(valor)){
String df_pais = atts.getValue(i);
set_df_pais(df_pais);
}
if("referencia".equals(valor)){
String df_referencia = atts.getValue(i);
set_df_referencia(df_referencia);
}
}
}
if ("ExpedidoEn".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("calle".equals(valor)){
String ee_calle = atts.getValue(i);
set_ee_calle(ee_calle);
}
if("codigoPostal".equals(valor)){
String ee_codigoPostal = atts.getValue(i);
set_ee_codigoPostal(ee_codigoPostal);
}
if("colonia".equals(valor)){
String ee_colonia = atts.getValue(i);
set_ee_colonia(ee_colonia);
}
if("estado".equals(valor)){
String ee_estado = atts.getValue(i);
set_ee_estado(ee_estado);
}
if("localidad".equals(valor)){
String ee_localidad = atts.getValue(i);
set_ee_localidad(ee_localidad);
}
if("municipio".equals(valor)){
String ee_municipio = atts.getValue(i);
set_ee_municipio(ee_municipio);
}
if("noExterior".equals(valor)){
String ee_noExterior = atts.getValue(i);
set_ee_noExterior(ee_noExterior);
}
if("noInterior".equals(valor)){
String ee_noInterior = atts.getValue(i);
set_ee_noInterior(ee_noInterior);
}
if("pais".equals(valor)){
String ee_pais = atts.getValue(i);
set_ee_pais(ee_pais);
}
if("referencia".equals(valor)){
String ee_referencia = atts.getValue(i);
set_ee_referencia(ee_referencia);
}
}
}
if ("Receptor".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("nombre".equals(valor)){
String nr_nombre = atts.getValue(i);
set_nr_nombre(nr_nombre);
}
if("rfc".equals(valor)){
String nr_rfc = atts.getValue(i);
set_nr_rfc(nr_rfc);
}
}
}
if ("Domicilio".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("calle".equals(valor)){
String nd_calle = atts.getValue(i);
set_nd_calle(nd_calle);
}
if("codigoPostal".equals(valor)){
String nd_codigoPostal = atts.getValue(i);
set_nd_codigoPostal(nd_codigoPostal);
}
if("colonia".equals(valor)){
String nd_colonia = atts.getValue(i);
set_nd_colonia(nd_colonia);
}
if("estado".equals(valor)){
String nd_estado = atts.getValue(i);
set_nd_estado(nd_estado);
}
if("localidad".equals(valor)){
String nd_localidad = atts.getValue(i);
set_nd_localidad(nd_localidad);
}
if("municipio".equals(valor)){
String nd_municipio = atts.getValue(i);
set_nd_municipio(nd_municipio);
}
if("noExterior".equals(valor)){
String nd_noExterior = atts.getValue(i);
set_nd_noExterior(nd_noExterior);
}
if("noInterior".equals(valor)){
String nd_noInterior = atts.getValue(i);
set_nd_noInterior(nd_noInterior);
}
if("pais".equals(valor)){
String nd_pais = atts.getValue(i);
set_nd_pais(nd_pais);
}
if("referencia".equals(valor)){
String nd_referencia = atts.getValue(i);
set_nd_referencia(nd_referencia);
}
}
}
if ("Concepto".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("cantidad".equals(valor)){
String nc_cantidad = atts.getValue(i);
set_nc_cantidad(nc_cantidad);
}
if("descripcion".equals(valor)){
String nc_descripcion = atts.getValue(i);
set_nc_descripcion(nc_descripcion);
}
if("importe".equals(valor)){
String nc_importe = atts.getValue(i);
set_nc_importe(nc_importe);
}
if("noIdentificacion".equals(valor)){
String nc_noIdentificacion = atts.getValue(i);
set_nc_noIdentificacion(nc_noIdentificacion);
}
if("unidad".equals(valor)){
String nc_unidad = atts.getValue(i);
set_nc_unidad(nc_unidad);
}
if("valorUnitario".equals(valor)){
String nc_valorUnitario = atts.getValue(i);
set_nc_valorUnitario(nc_valorUnitario);
}
}
set_concepto();
}
if ("Impuestos".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("totalImpuestosRetenidos".equals(valor)){
String totalImpuestosRetenidos = atts.getValue(i);
set_totalImpuestosRetenidos(totalImpuestosRetenidos);
}
if("totalImpuestosTrasladados".equals(valor)){
String totalImpuestosTrasladados = atts.getValue(i);
set_totalImpuestosTrasladados(totalImpuestosTrasladados);
}
}
}
if ("Retencion".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("importe".equals(valor)){
String nr_importe = atts.getValue(i);
set_nr_importe(nr_importe);
}
if("impuesto".equals(valor)){
String nr_impuesto = atts.getValue(i);
set_nr_impuesto(nr_impuesto);
}
}
set_retencion();
}
if ("Traslado".equals(qName)) {
for(int i=0; i < atts.getLength();i++){
String valor = atts.getQName(i);
if("importe".equals(valor)){
String nt_importe = atts.getValue(i);
set_nt_importe(nt_importe);
}
if("impuesto".equals(valor)){
String nt_impuesto = atts.getValue(i);
set_nt_impuesto(nt_impuesto);
}
if("tasa".equals(valor)){
String nt_tasa = atts.getValue(i);
set_nt_tasa(nt_tasa);
}
}
set_traslado();
}
}
}
private void set_nc_version(String nc_version){
this.nc_version = nc_version;
}
public String get_nc_version(){
return nc_version;
}
private void set_nc_serie(String nc_serie){
this.nc_serie = nc_serie;
}
public String get_nc_serie(){
return nc_serie;
}
private void set_nc_folio(String nc_folio){
this.nc_folio = nc_folio;
}
public String get_nc_folio(){
return nc_folio;
}
private void set_nc_fecha(String nc_fecha){
this.nc_fecha = nc_fecha;
}
public String get_nc_fecha(){
return nc_fecha;
}
private void set_nc_noAprobacion(String nc_noAprobacion){
this.nc_noAprobacion = nc_noAprobacion;
}
public String get_nc_noAprobacion(){
return nc_noAprobacion;
}
private void set_nc_anioAprobacion(String nc_anioAprobacion){
this.nc_anioAprobacion = nc_anioAprobacion;
}
public String get_nc_anioAprobacion(){
return nc_anioAprobacion;
}
private void set_nc_tipoDeComprobante(String nc_tipoDeComprobante){
this.nc_tipoDeComprobante = nc_tipoDeComprobante;
}
public String get_nc_tipoDeComprobante(){
return nc_tipoDeComprobante;
}
private void set_nc_formaDePago(String nc_formaDePago){
this.nc_formaDePago = nc_formaDePago;
}
public String get_nc_formaDePago(){
return nc_formaDePago;
}
private void set_nc_condicionesDePago(String nc_condicionesDePago){
this.nc_condicionesDePago = nc_condicionesDePago;
}
public String get_nc_condicionesDePago(){
return nc_condicionesDePago;
}
private void set_nc_subTotal(String nc_subTotal){
this.nc_subTotal = nc_subTotal;
}
public String get_nc_subTotal(){
return nc_subTotal;
}
private void set_nc_descuento(String nc_descuento){
this.nc_descuento = nc_descuento;
}
public String get_nc_descuento(){
return nc_descuento;
}
private void set_nc_total(String nc_total){
this.nc_total = nc_total;
}
public String get_nc_total(){
return nc_total;
}
private void set_ne_rfc(String ne_rfc){
this.ne_rfc = ne_rfc;
}
public String get_ne_rfc(){
return ne_rfc;
}
private void set_ne_nombre(String ne_nombre){
this.ne_nombre = ne_nombre;
}
public String get_ne_nombre(){
return ne_nombre;
}
private void set_df_calle(String df_calle){
this.df_calle = df_calle;
}
public String get_df_calle(){
return df_calle;
}
private void set_df_noExterior(String df_noExterior){
this.df_noExterior = df_noExterior;
}
public String get_df_noExterior(){
return df_noExterior;
}
private void set_df_noInterior(String df_noInterior){
this.df_noInterior = df_noInterior;
}
public String get_df_noInterior(){
return df_noInterior;
}
private void set_df_colonia(String df_colonia){
this.df_colonia = df_colonia;
}
public String get_df_colonia(){
return df_colonia;
}
private void set_df_localidad(String df_localidad){
this.df_localidad = df_localidad;
}
public String get_df_localidad(){
return df_localidad;
}
private void set_df_referencia(String df_referencia){
this.df_referencia = df_referencia;
}
public String get_df_referencia(){
return df_referencia;
}
private void set_df_municipio(String df_municipio){
this.df_municipio = df_municipio;
}
public String get_df_municipio(){
return df_municipio;
}
private void set_df_estado(String df_estado){
this.df_estado = df_estado;
}
public String get_df_estado(){
return df_estado;
}
private void set_df_pais(String df_pais){
this.df_pais = df_pais;
}
public String get_df_pais(){
return df_pais;
}
private void set_df_codigoPostal(String df_codigoPostal){
this.df_codigoPostal = df_codigoPostal;
}
public String get_df_codigoPostal(){
return df_codigoPostal;
}
private void set_ee_calle(String ee_calle){
this.ee_calle = ee_calle;
}
public String get_ee_calle(){
return ee_calle;
}
private void set_ee_noExterior(String ee_noExterior){
this.ee_noExterior = ee_noExterior;
}
public String get_ee_noExterior(){
return ee_noExterior;
}
private void set_ee_noInterior(String ee_noInterior){
this.ee_noInterior = ee_noInterior;
}
public String get_ee_noInterior(){
return ee_noInterior;
}
private void set_ee_colonia(String ee_colonia){
this.ee_colonia = ee_colonia;
}
public String get_ee_colonia(){
return ee_colonia;
}
private void set_ee_localidad(String ee_localidad){
this.ee_localidad = ee_localidad;
}
public String get_ee_localidad(){
return ee_localidad;
}
private void set_ee_referencia(String ee_referencia){
this.ee_referencia = ee_referencia;
}
public String get_ee_referencia(){
return ee_referencia;
}
private void set_ee_municipio(String ee_municipio){
this.ee_municipio = ee_municipio;
}
public String get_ee_municipio(){
return ee_municipio;
}
private void set_ee_estado(String ee_estado){
this.ee_estado = ee_estado;
}
public String get_ee_estado(){
return ee_estado;
}
private void set_ee_pais(String ee_pais){
this.ee_pais = ee_pais;
}
public String get_ee_pais(){
return ee_pais;
}
private void set_ee_codigoPostal(String ee_codigoPostal){
this.ee_codigoPostal = ee_codigoPostal;
}
public String get_ee_codigoPostal(){
return ee_codigoPostal;
}
private void set_nr_rfc(String nr_rfc){
this.nr_rfc = nr_rfc;
}
public String get_nr_rfc(){
return nr_rfc;
}
private void set_nr_nombre(String nr_nombre){
this.nr_nombre = nr_nombre;
}
public String get_nr_nombre(){
return nr_nombre;
}
private void set_nd_calle(String nd_calle){
this.nd_calle = nd_calle;
}
public String get_nd_calle(){
return nd_calle;
}
private void set_nd_noExterior(String nd_noExterior){
this.nd_noExterior = nd_noExterior;
}
public String get_nd_noExterior(){
return nd_noExterior;
}
private void set_nd_noInterior(String nd_noInterior){
this.nd_noInterior = nd_noInterior;
}
public String get_nd_noInterior(){
return nd_noInterior;
}
private void set_nd_colonia(String nd_colonia){
this.nd_colonia = nd_colonia;
}
public String get_nd_colonia(){
return nd_colonia;
}
private void set_nd_localidad(String nd_localidad){
this.nd_localidad = nd_localidad;
}
public String get_nd_localidad(){
return nd_localidad;
}
private void set_nd_referencia(String nd_referencia){
this.nd_referencia = nd_referencia;
}
public String get_nd_referencia(){
return nd_referencia;
}
private void set_nd_municipio(String nd_municipio){
this.nd_municipio = nd_municipio;
}
public String get_nd_municipio(){
return nd_municipio;
}
private void set_nd_estado(String nd_estado){
this.nd_estado = nd_estado;
}
public String get_nd_estado(){
return nd_estado;
}
private void set_nd_pais(String nd_pais){
this.nd_pais = nd_pais;
}
public String get_nd_pais(){
return nd_pais;
}
private void set_nd_codigoPostal(String nd_codigoPostal){
this.nd_codigoPostal = nd_codigoPostal;
}
public String get_nd_codigoPostal(){
return nd_codigoPostal;
}
private void set_nc_cantidad(String nc_cantidad){
this.nc_cantidad = nc_cantidad;
}
private void set_nc_unidad(String nc_unidad){
this.nc_unidad = nc_unidad;
}
private void set_nc_noIdentificacion(String nc_noIdentificacion){
this.nc_noIdentificacion = nc_noIdentificacion;
}
private void set_nc_descripcion(String nc_descripcion){
this.nc_descripcion = nc_descripcion;
}
private void set_nc_valorUnitario(String nc_valorUnitario){
this.nc_valorUnitario = nc_valorUnitario;
}
private void set_nc_importe(String nc_importe){
this.nc_importe = nc_importe;
}
private void set_concepto(){
String conceptoN="";
conceptoN = nc_cantidad + "|" + nc_unidad +"|" + nc_noIdentificacion + "|" + nc_descripcion + "|" + nc_valorUnitario + "|" + nc_importe;
this.concepto.add(conceptoN);
nc_cantidad = "";
nc_unidad = "";
nc_noIdentificacion = "";
nc_descripcion = "";
nc_valorUnitario = "";
nc_importe = "";
}
public String get_concepto(){
String conceptos = "";
Iterator it = concepto.iterator();
while (it.hasNext()){
conceptos += it.next() + "|";
}
return conceptos;
}
private void set_nr_impuesto(String nr_impuesto){
this.nr_impuesto = nr_impuesto;
}
private void set_nr_importe(String nr_importe){
this.nr_importe = nr_importe;
}
private void set_retencion(){
String retencionN="";
retencionN = nr_impuesto + "|" + nr_importe;
this.retencion.add(retencionN);
nr_impuesto = "";
nr_importe = "";
}
public String get_retencion(){
String retenciones = "";
Iterator it = retencion.iterator();
while (it.hasNext()){
retenciones += it.next() + "|";
}
return retenciones;
}
private void set_totalImpuestosRetenidos(String totalImpuestosRetenidos){
this.totalImpuestosRetenidos = totalImpuestosRetenidos;
}
public String get_totalImpuestosRetenidos(){
return totalImpuestosRetenidos;
}
private void set_nt_impuesto(String nt_impuesto){
this.nt_impuesto = nt_impuesto;
}
private void set_nt_tasa(String nt_tasa){
this.nt_tasa = nt_tasa;
}
private void set_nt_importe(String nt_importe){
this.nt_importe = nt_importe;
}
private void set_traslado(){
String trasladoN="";
trasladoN = nt_impuesto + "|" + nt_tasa + "|" + nt_importe;
this.traslado.add(trasladoN);
nt_impuesto = "";
nt_tasa = "";
nt_importe = "";
}
public String get_traslado(){
String traslados = "";
Iterator it = traslado.iterator();
while (it.hasNext()){
traslados += it.next() + "|";
}
return traslados;
}
private void set_totalImpuestosTrasladados(String totalImpuestosTrasladados){
this.totalImpuestosTrasladados = totalImpuestosTrasladados;
}
public String get_totalImpuestosTrasladados(){
return totalImpuestosTrasladados;
}
public String getCadenaOriginal() {
return ("||" + this.get_nc_version() + "|" + this.get_nc_serie() + "|" + this.get_nc_folio() + "|" + this.get_nc_fecha() + "|" + this.get_nc_noAprobacion() + "|" + this.get_nc_anioAprobacion() + "|" + this.get_nc_tipoDeComprobante() + "|" + this.get_nc_formaDePago() + "|" + this.get_nc_condicionesDePago() + "|" + this.get_nc_subTotal() + "|" + this.get_nc_descuento() + "|" + this.get_nc_total() + "|" + this.get_ne_rfc() + "|" + this.get_ne_nombre() + "|" + this.get_df_calle() + "|" + this.get_df_noExterior() + "|" + this.get_df_noInterior() + "|" + this.get_df_colonia() + "|" + this.get_df_localidad() + "|" + this.get_df_referencia() + "|" + this.get_df_municipio() + "|" + this.get_df_estado() + "|" + this.get_df_pais() + "|" + this.get_df_codigoPostal() + "|" + this.get_ee_calle() + "|" + this.get_ee_noExterior() + "|" + this.get_ee_noInterior() + "|" + this.get_ee_colonia() + "|" + this.get_ee_localidad() + "|" + this.get_ee_referencia() + "|" + this.get_ee_municipio() + "|" + this.get_ee_estado() + "|" + this.get_ee_pais() + "|" + this.get_ee_codigoPostal() + "|" + this.get_nr_rfc() + "|" + this.get_nr_nombre() + "|" + this.get_nd_calle() + "|" + this.get_nd_noExterior() + "|" + this.get_nd_noInterior() + "|" + this.get_nd_colonia() + "|" + this.get_nd_localidad() + "|" + this.get_nd_referencia() + "|" + this.get_nd_municipio() + "|" + this.get_nd_estado() + "|" + this.get_nd_pais() + "|" + this.get_nd_codigoPostal() + "|" + this.get_concepto() + this.get_retencion() + this.get_totalImpuestosRetenidos() + "|" + this.get_traslado() + this.get_totalImpuestosTrasladados() + "||");
}
public void set_nc_noCertificado(String nc_noCertificado) {
this.nc_noCertificado = nc_noCertificado;
}
public String get_nc_noCertificado() {
return nc_noCertificado;
}