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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.