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.