users@jaxb.java.net

DefaultValidationEventHandler

From: lissette <glorianchu18_at_hotmail.com>
Date: Sat, 19 May 2007 07:21:54 -0700 (PDT)

I have this error but I don´t know:

DefaultValidationEventHandler: [ERROR]: tag name "description" is not
allowed. Possible tag names are: <product>
     Location:
Error: javax.xml.bind.UnmarshalException: tag name "description" is not
allowed. Possible tag names are: <product>
 - with linked exception:
[com.sun.msv.verifier.ValidityViolation: tag name "description" is not
allowed. Possible tag names are: <product>]

my java class is:
import generated.*;
import javax.xml.bind.*;
import java.io.*;
//import java.math.BigDecimal;
import java.util.*;

public class Main {
        
        public static void main(String[] args) throws FileNotFoundException {
                try {
                        //ponemos la ruta donde esta jaxb.properties
                        JAXBContext jc = JAXBContext.newInstance( "generated" );
                        Unmarshaller u = jc.createUnmarshaller();
                        u.setValidating(true);
                        
                        InputStream in = new FileInputStream("listaPrecios.xml");
                        if(in == null) {
                                System.out.println("No encuentro el fichero");
                                return;
                        }//if
                        
                        //construimos el modelo a partir el stream de entrada
                        Vendedor mifichero = (Vendedor)u.unmarshal(in );
                        //recuperamos la lista de catalogos y productos
                        List productos = mifichero.getProducto();
                        int numero = productos.size();
                        System.out.println("El numero de productos es: " +numero );
                        for (int i = 0; i < numero; i++) {
                                Producto productoconcreto = (Producto)productos.get(i);
                                System.out.println("El producto se llama:
"+productoconcreto.getNombre()+
                                                " y su precio es: "+productoconcreto.getPrecio());
                                //Para obtener los datos del producto
                        }//for
                        System.out.println();
                        
                        
                        // ahora añadimos un nuevo catalogo
            //CatalogTypeImpl nuevoCatalogo = new CatalogTypeImpl();
            
            // establecemos los elementos
           // nuevoCatalogo.setName("Cafes1");
           // nuevoCatalogo.setCatalogID("2");
            //nuevoCatalogo.setDescription("Cafes");
            //Aqui añadimos productos para el catalogo
           // ProductTypeImpl nuevoProducto = new ProductTypeImpl();
           // nuevoProducto.setProductID("C349K7");
           // nuevoProducto.setProductName("Mo");
           // nuevoProducto.setPrice(new BigDecimal("23.3"));
           // nuevoProducto.setVendor("Corral S.A.");
            //nuevoProducto.setProperty("");
            // añadimos al catalogo nuevos productos
             
            List prod = new ArrayList();
           
           // catalogo.add(nuevoProducto); Si lo añado al primer catalogo
           // catalogo.add(nuevoCatalogo);
           // catalogo.add(nuevoProducto); //lo añado al segundo catalogo
            
            // vamos a pintar ahora el arbol XML generado para asegurarnos
que se ha añadido
           Marshaller formateador = jc.createMarshaller();
           formateador.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
           formateador.marshal( mifichero, System.out );
            
            // ahora escribimos a un fichero, en el correcto juego de
caracteres
           formateador.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
           FileOutputStream salida = new FileOutputStream("salida.xml");
           formateador.marshal( mifichero, salida);

                }catch(JAXBException e){
                        System.out.println("Error: "+e.toString());
                }//catch
                catch(Exception el){
                        System.out.println("Error: "+el.toString());
                }//catch
        }//main

}//Main

My XML is:
<?xml version="1.0" encoding="UTF-8"?>
<catalogs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="catalogs.xsd">
    <catalog catalogID="1" name="Cafes">
        <description>El catalogo contiene Cafes</description>
        <product productID="C349K4">
                <productName>Arabica</productName>
                <vendor>Cafetaras Norte S.A</vendor>
                <property name="Remark"></property>
                    <price>13.5</price>
        </product>
        <product productID="C349K5">
                    <productName>Mocha Java</productName>
                <vendor>Cafetaras Norte S.A</vendor>
                <property name="Remark"></property>
                          <price>11.95</price>
        </product>
        <product productID="C349K6">
                    <productName>Sumatra</productName>
                <vendor>Hig S.A</vendor>
                <price>12.5</price>
        </product>
    </catalog>
</catalogs>

and my Schema is:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
         
        <xsd:element name="product">
                <xsd:complexType>
                        <xsd:sequence>
                                <!-- Definicion de los elementos nombre y precio -->
                                <xsd:element name="productName" type="xsd:string" />
                                <xsd:element name="vendor" type="xsd:string" />
                                <xsd:element ref="property" minOccurs="0" maxOccurs="1"/>
                                <xsd:element name="price" type="xsd:decimal" />
                        </xsd:sequence>
                        <xsd:attribute name="productID" type="xsd:string" use="required" />
                </xsd:complexType>
        </xsd:element>
        
        <xsd:element name="property">
                <xsd:complexType>
                        <xsd:attribute name="name" type="xsd:string" use="optional"/>
                </xsd:complexType>
        </xsd:element>

        <xsd:element name="catalog">
                <xsd:complexType>
                        <xsd:sequence>
                                <xsd:element name="description" type="xsd:string" maxOccurs="1"/>
                                <xsd:element ref="product" minOccurs="1" maxOccurs="unbounded"/>
                        </xsd:sequence>
                        <xsd:attribute name="catalogID" type="xsd:string" use="required" />
                        <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
        </xsd:element>

        <xsd:element name="catalogs">
                <xsd:complexType>
                        <xsd:sequence>
                                <xsd:element ref="catalog" minOccurs="1" maxOccurs="unbounded"/>
                        </xsd:sequence>
                </xsd:complexType>
        </xsd:element>
</xsd:schema>

Could you help me? thanks very much.
-- 
View this message in context: http://www.nabble.com/DefaultValidationEventHandler-tf3782577.html#a10697239
Sent from the java.net - jaxb users mailing list archive at Nabble.com.