validacja XML by XSD a problem namespace w SAXParser
[ Nouvelle discussion
| Répondre au groupe
|
pl.comp.xml ]
Sujet: validacja XML by XSD a problem namespace w SAXParser
De: ...@spamu.com (abc_javy)
Groupes: pl.comp.lang.java, pl.comp.xml
Organisation: "Portal Gazeta.pl -> http://www.gazeta.pl"
Date: 08. Sep 2008, 14:44:32
|
X-No-Archive: Yes
ja mam blad czy ministerstwo ?
Witam, napisalem sobie klase
i niestety gdy probuje validowac, a dokladniej
000001005_COIA_Spis.xml z tej stronki za pomoca
http://epl.icm.edu.pl/viewtopic.php?t=126&highlight=spis
====================================
<?xml version="1.0" encoding="UTF-8" ?>
<SpisZdawczoOdbiorczy xmlns="http://www.mswia.gov.pl/standardy/ndap"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mswia.gov.pl/standardy/ndap
SpisZdawczo-odbiorczy.xsd">
<Sprawa>.....
.......
====================================
https://ndapapp.nask.net.pl/pack/SpisZdawczo-odbiorczy.xsd
====================================
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.mswia.gov.pl/standardy/ndap"
xmlns:tns="http://www.mswia.gov.pl/standardy/ndap"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<element name="SpisZdawczoOdbiorczy">
<complexType>.........
........
====================================
to wywala wyjatkiem
Error on line 2: cvc-elt.1: Cannot find the declaration of element
'SpisZdawczoOdbiorczy'.
obojetnie czy dac w metodzie Saxa
saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
new File(pathfilexsd).toURI().toString());
czy
saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
new File(pathfilexsd).toURI().toString());
Klase dolaczam, mozna sobie xml i xsd sicagnac i klase wywolac
ValidatorXML validatorXML = new ValidatorXML();
validatorXML.validate("./SpisZdawczo-odbiorczy.xsd",
"./000001005_COIA_Spis.xml",
false);
Jakiekolwiek pomysly mile widziane, bo po tygodniu nie ma juz zadnych
-------------klasa------
package com.ja.xml;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
* @author ja
*
*/
public class ValidatorXML {
public String validate(String pathfilexsd, String pathfilexml, boolean
nonamespace)
{
System.out.println(new File(pathfilexml).toURI().toString());
org.jdom.Document myDocument = null;
SAXBuilder builder = new SAXBuilder();
try {
myDocument = builder.build(new FileInputStream(pathfilexml));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return validate(pathfilexsd, myDocument, nonamespace);
}
public String validate(String pathfilexsd, org.jdom.Document myDocument,
boolean nonamespace)
{
String DEFAULT_PARSER_NAME =
"org.apache.xerces.parsers.SAXParser";
SAXBuilder saxBuilder = new SAXBuilder(DEFAULT_PARSER_NAME, true);
// Turn on validation
saxBuilder.setFeature("http://apache.org/xml/features/validation/schema",
true);
saxBuilder.setFeature("http://apache.org/xml/features/validation/schema-full-checking",
true);
saxBuilder.setFeature("http://xml.org/sax/features/validation", true);
File filexsd = new File(pathfilexsd);
if (!filexsd.exists())
{
System.err.println(new Exception());
return "Brak pliku xsd";
}
if (nonamespace)
{
saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
new File(pathfilexsd).toURI().toString());
}
else
{
saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
new File(pathfilexsd).toURI().toString());
}
System.out.println(new File(pathfilexsd).toURI().toString());
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLOutputter serializer = new XMLOutputter(Format.getCompactFormat());
try {
serializer.output(myDocument, out);
} catch (IOException e) {
e.printStackTrace();
return e.getMessage();
}
//
try {
ByteArrayInputStream byteArrayInputStream = new
ByteArrayInputStream(out.toByteArray());
saxBuilder.build(byteArrayInputStream);
} catch (JDOMException e) {
System.err.println(e.getMessage());
return e.getMessage();
} catch (IOException e) {
e.printStackTrace();
return e.getMessage();
}
System.out.println("Validacja zakoñcozna pomy¶lnie");
return "0";
}
}

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|