oi pessoal,
estou fazendo uma aplicação de NFs-e e estou tendo o seguinte problema:
Cannot find the
declaration of element 'EnviarLoteRpsEnvio'
Sendo meu xml possui essa tag, segue:
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/nfse.xsd"><LoteRps Id="lote001" versao="2.01">...aqui vai um XML gigante </EnviarLoteRpsEnvio>
na hora de validar no schema, ele não acha a tag…alguem sabe porque?
Como EnviarLoteRpsEnvio está declarado no seu schema?
Como assim? se.for quanto.a.ortografia…esta desse jeito que postei
Como você faz a validação? Usa um arquivo XSD ou algo do tipo?
Ah sim. inclusive gerei o xml apartir do xsd
Pois é, e como está declarado a tag EnviarLoteRpsEnvio no seu XSD? Esse erro está ocorrendo provalvemente porque tem alguma coisa declarada de forma errada e faz com que a TAG não seja reconhecida. Poderia postar a parte do seu XSD que contém essa tag?
Posso sim…mas me.diz.como isso eh possivel.sendo que gerei o xml pelo.xsd, usando o eclipse?
Você não mudou nada no XML? Como então você está fazendo a validação? Realmente isso está estranho.
Perai…vou postar os dois…mas.nao.mudei nada…sohadicionei as informacoes.
javaCBA
Janeiro 8, 2013, 2:18am
#10
javaCBA
Janeiro 8, 2013, 2:26am
#11
Minha validação:
[code]import java.io.IOException;
// SAX
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.XMLReader;
//SAX and external XSD
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.InputSource;
public class XMLUtils {
private XMLUtils() {}
// validate SAX and external XSD
public static boolean validateWithExtXSDUsingSAX(String xml, String xsd)
throws ParserConfigurationException, IOException
{
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
SAXParser parser = null;
try {
factory.setSchema(schemaFactory.newSchema(new Source[] {new StreamSource( xsd )}));
parser = factory.newSAXParser();
}
catch (SAXException se) {
System.out.println("SCHEMA : " + se.getMessage()); // problem in the XSD itself
return false;
}
XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(
new ErrorHandler() {
public void warning(SAXParseException e) throws SAXException {
System.out.println("WARNING: " + e.getMessage()); // do nothing
}
public void error(SAXParseException e) throws SAXException {
System.out.println("ERROR : " + e.getMessage());
throw e;
}
public void fatalError(SAXParseException e) throws SAXException {
System.out.println("FATAL : " + e.getMessage());
throw e;
}
}
);
reader.parse(new InputSource(xml));
return true;
}
catch (ParserConfigurationException pce) {
throw pce;
}
catch (IOException io) {
throw io;
}
catch (SAXException se){
return false;
}
}
}[/code]
Trecho XSD
[code]
<xsd:element name=“EnviarLoteRpsEnvio”>
xsd:complexType
xsd:sequence
<xsd:element name=“LoteRps” type=“tcLoteRps” />
<xsd:element ref=“dsig:Signature” minOccurs=“0”
maxOccurs=“1” />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="EnviarLoteRpsResposta">
<xsd:complexType>
<xsd:choice>
<xsd:sequence>
<xsd:element name="NumeroLote" type="tsNumeroLote"
minOccurs="1" maxOccurs="1" />
<xsd:element name="DataRecebimento" type="xsd:dateTime"
minOccurs="1" maxOccurs="1" />
<xsd:element name="Protocolo" type="tsNumeroProtocolo"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
<xsd:element ref="ListaMensagemRetorno" minOccurs="1"
maxOccurs="1" />
</xsd:choice>
</xsd:complexType>
</xsd:element>[/code]
Rapaz, olhei o XSD que você passou e aparentemente está tudo em ordem. Faça o seguinte. Gere um XML menor e depois vá gerando XMLs maiores, até descobrir onde está o erro. Acontece que pode ter alguma tag bem interna do XML que você gerou que não está com o valor correto ou algo do tipo.
javaCBA
Janeiro 8, 2013, 11:57am
#13
já fiz isso, mesmo só com a tag principal e mais uma…ele não reconhece.
O problema é que ele não reconhece a tag principal, então independente do que tenha dentro…não valida