[Xerces] [Java] whitespaces et schemaLocation
Je suis en train de parser de l'XML avec Xerces-Java, et je me retrouve face a 2 petits problemes.
1) J'aimerais faire disparaitre les text nodes correspondant aux whitespaces (genre newlines) automatiquement au parsage (il y a moyen, non ?)
2) Pourquoi je n'arrive pas a trouver mon Schéma précisé avec schemaLocation quand je précise un chemin relatif (ce qui marche quand je valide avec oXygen XML editor, un plugin Eclipse) ?
Je mets ci-dessous un extrait de l'XML, du Schéma et du code Java.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="myNS">
<xsd:element name="profile">
<xsd:complexType>
<xsd:element name="task">
<xsd:complexType>
<xsd:element name="Misc">
<xsd:complexType>
<xsd:choice>
<xsd:element name="login">
<xsd:complexType/>
</xsd:element>
<xsd:element name="logout">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:complexType>
</xsd:element>
<xsd:attribute name="name" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <profile
xmlns="myNS"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="myNS file:///path/name/hidden/profile.xsd"
name="Test profile">
<task>
<Misc>
<login/>
</Misc>
</task>
<task>
<Misc>
<logout/>
</Misc>
</task>
</profile> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| DOMParser parser = new DOMParser();
ErrorHandler handler = new ErrorHandler() {
public void warning(SAXParseException e) throws SAXException {
System.out.println("[warning] "+e.getMessage());
}
public void error(SAXParseException e) throws SAXException {
System.out.println("[error] "+e.getMessage());
}
public void fatalError(SAXParseException e) throws SAXException {
System.out.println("[fatal error] "+e.getMessage());
throw e;
}
};
parser.setErrorHandler(handler);
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setFeature("http://apache.org/xml/features/dom/include-ignorable-whitespace",false);
parser.parse(new InputSource(new FileReader(file)));
Document doc = parser.getDocument(); |
Pour des raisons de "secret industriel", je n'ai fourni qu'un strict minimum, n'hésitez pas à demander plus, je ferais dans la mesure du possible.
Par ailleurs, ne cherchez pas trop dans le code Java. Il fonctionne au niveau de Java, je n'arrive juste pas a obtenir ce que je veux de Xerces.
Merci d'avance.