xml

Tengo un problema estoy tratando de extraer informacion de un xml el problema es el siguiente:
tengo dos tag hijos de Conceptos llamados concepto los dos y no se como extraer la informacion ya lo e estado intentando pero no lo logro explico este es el xml ocupo JespXML.jar

<cfdi:Conceptos>
             <cfdi:Concepto cantidad="2.00" unidad="PIEZA" descripcion="TONER HP CF210X NEGRO" valorUnitario="1291.9500" importe="2377.19">
</cfdi:Concepto>
<cfdi:Concepto cantidad="5.00" unidad="PIEZA" descripcion="TONER HP 131 COLOR CF211A-CF212A-CF213A" valorUnitario="1239.7500" importe="5702.85">
</cfdi:Concepto>
</cfdi:Conceptos>

asi extraigo la primera parte

Tag conceptos = raiz.getTagHijoByName("cfdi:Conceptos");
Tag concepto = conceptos.getTagHijoByName("cfdi:Concepto");
            cantidad3 = concepto.getValorDeAtributo("cantidad");
            unidad3 = concepto.getValorDeAtributo("unidad");
            descripcion3 = concepto.getValorDeAtributo("descripcion");
            valor3 = concepto.getValorDeAtributo("valorUnitario");
            importe3 = concepto.getValorDeAtributo("importe");

y extraigo la informacion que requiro pero solo de esta parte

<cfdi:Concepto cantidad="2.00" unidad="PIEZA" descripcion="TONER HP CF210X NEGRO" valorUnitario="1291.9500" importe="2377.19">

me gustaria extraer la siguiente parte pero no puedo ya que me vuelve a jalar los mismos datos con este codigo

Tag concepto2 = conceptos.getTagHijoByName("cfdi:Concepto");
            System.out.println(concepto2);
            String cantidad4 = concepto2.getValorDeAtributo("cantidad");
            System.out.println(cantidad4);

y me vuelve a jalar la misma informacion de

 
<cfdi:Concepto cantidad="2.00" unidad="PIEZA" descripcion="TONER HP CF210X NEGRO" valorUnitario="1291.9500" importe="2377.19">

ayuda

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

El método

El método getTagHijoByName("cfdi:Concepto") te trae solo el primero debes de usar getTagHijoByName("cfdi:Concepto", Tag.Cantidad.TODOS_LOS_TAGS );

No conozco la razón por la cual elegiste esta biblioteca para XML pero su código fuente esta disponible, revisalo para que veas que otras opciones tienes ( así es como supe que existía ese método )

https://code.google.com/p/analizador-xml/source/browse/#svn%2Ftrunk%2Fsr...

gracias por responder oscar

gracias por responder oscar alguno que me recomiendes

Imagen de apolonioluis

puedes usar Dom4J: public

puedes usar Dom4J:

public static void main(String[] args) {

        try {
            File inputFile = new File("cfdi.xml");
            SAXReader reader = new SAXReader();
            Document document = reader.read(inputFile);

            System.out.println("Root element :"
                    + document.getRootElement().getName());

            Element classElement = document.getRootElement();
           
            Node nodeEmisor = document.selectSingleNode("//cfdi:Comprobante/cfdi:Emisor");
           
            System.out.println("Nombre del elemento :" + nodeEmisor.getName());
            System.out.println("Razon Social Emisor: " + nodeEmisor.valueOf("@nombre"));
            System.out.println("RFC Emisor: " + nodeEmisor.valueOf("@rfc"));

            List<Node> nodes = document.selectNodes("//cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto");
            System.out.println("----------------------------");
            for (Node node : nodes) {
                System.out.println("\nCurrent Element :" + node.getName());
                System.out.println("Descripcion : " + node.valueOf("@descripcion"));
                System.out.println("Descripcion : " + node.valueOf("@valorUnitario"));
                System.out.println("Descripcion : " + node.valueOf("@cantidad"));
                System.out.println("Descripcion : " + node.valueOf("@importe"));                
            }
        } catch (DocumentException e) {
        }
    }

Imagen de abrahamstalin

Cambia la forma de extraer la informacion!!

Solo te dire

xjc
jaxb

y te aseguro que solucionaras todos tus problemas.

"No busquen demasiado, java ya tiene la solución."

Xpath

Utiliza alguna libreria que te permita hacer consultas con Xpath, ya te recomendaron algunas