1
resposta

Não pode localizar a declaração do elemento no XML

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="produto">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="nome" type="xsd:string" />
                <xsd:element name="preco" type="xsd:string" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="venda">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="formaDePagamento" type="xsd:string" />
                <xsd:element name="produtos">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element ref="produto" maxOccurs="unbounded" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="moeda" type="xsd:string" />
        </xsd:complexType>
    </xsd:element>

</xsd:schema>
Cartao Livro da casa do código
29.90
        
        
            Livro de java
            
29.90
        
    

```
package br.com.alura.Teste;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException;

public class Sistema {

public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException {


    DocumentBuilderFactory fabrica = DocumentBuilderFactory.newInstance();

    fabrica.setValidating(true);
    fabrica.setNamespaceAware(true);
    fabrica.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
    DocumentBuilder builder = fabrica.newDocumentBuilder();

    Document document = builder.parse("src/vendas.xml");

    Element venda = document.getDocumentElement();
    String moeda = venda.getAttribute("moeda");
    System.out.println(moeda);

    NodeList produtos = document.getElementsByTagName("produto");

    for(int i =0; i < produtos.getLength(); i++) {
        Element produto = (Element) produtos.item(i);
        String nome = produto.getElementsByTagName("nome").item(0).getTextContent();
        String preco = produto.getElementsByTagName("preco").item(0).getTextContent();

        System.out.println("-----------");
        System.out.println("Nome do produto: "+ nome);
        System.out.println("Preco do produto: "+ preco);
        System.out.println("-----------");
    }

}

}

Apresenta esse erro: Advertência: A validação foi ativada, mas um org.xml.sax.ErrorHandler não foi definido, provavelmente porque não era necessário. O parser usará um ErrorHandler padrão para imprimir os primeiros 0 erros. Chame o método 'setErrorHandler' para corrigir o problema.
Error: URI=file:///C:/Java/GitHub/curso_XML/src/vendas.xml Line=2: cvc-elt.1: Não pode localizar a declaração do elemento 'venda'.

`

1 resposta

Opa, desculpa a minha resposta, mas não parece um erro... Ele indica que você não registrou um handler para o erro e que vai usar um default. O seu programa não funcionou? Caso não tenha funcionado, pode colocar a exception completa aqui?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software