Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

version de parser XML et de JDK

4 réponses
Avatar
pcouas
Bonsoir

J'utilise une methode pour parser du XML,seulement celle ci est code
differament suivant que je suis en JDK 1.3 OU 1.4 (je sais il y a plus
r=E9cent, mais des vieux serveurs resistent encore !)

Est il possible par compilation conditionnelle ou par ClassForName de
faire Cohabiter les deux ????
Merci d'avance de vos r=E9ponses
Philippe



En JDK 1.4 elle est code comme cela


public void readObject(InputSource source)
throws IOException
{
try
{
SAXParserFactory parserFact =3D
SAXParserFactory.newInstance();
parserFact.setNamespaceAware(true);
SAXParser parser =3D
parserFact.newSAXParser();
parser.parse(source, this); //Inclus dans le jdk 1.4 (rt.jar)
}
catch (ParserConfigurationException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
catch (SAXException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
}



Alors qu'en JDK 1.3, et j'ai des clients avec AIX 4.3 elle es code
comme cela

public void readObject(InputSource source)
throws IOException
{
try
{
XMLReader parser =3D XMLReaderFactory.createXMLReader();
parser.setContentHandler(this);
parser.parse(source);
}
catch (SAXException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
}

4 réponses

Avatar
ownowl
Bonsoir

J'utilise une methode pour parser du XML,seulement celle ci est code
differament suivant que je suis en JDK 1.3 OU 1.4 (je sais il y a plus
récent, mais des vieux serveurs resistent encore !)

Est il possible par compilation conditionnelle ou par ClassForName de
faire Cohabiter les deux ????
Merci d'avance de vos réponses
Philippe



En JDK 1.4 elle est code comme cela


public void readObject(InputSource source)
throws IOException
{
try
{
SAXParserFactory parserFact > SAXParserFactory.newInstance();
parserFact.setNamespaceAware(true);
SAXParser parser > parserFact.newSAXParser();
parser.parse(source, this); //Inclus dans le jdk 1.4 (rt.jar)
}
catch (ParserConfigurationException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
catch (SAXException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
}



Alors qu'en JDK 1.3, et j'ai des clients avec AIX 4.3 elle es code
comme cela

public void readObject(InputSource source)
throws IOException
{
try
{
XMLReader parser = XMLReaderFactory.createXMLReader();
parser.setContentHandler(this);
parser.parse(source);
}
catch (SAXException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
}


bonsoir
si tu peut distribuer les deux méthodes un test sur
System.getProperty("java.version") permettrait de renvoyer sur la
méthode qui va bien.
Sinon tu peut effectivement utiliser le ClassForName à l'utilisation.
un implémentation possible

Interface XmlReaderBase {
readObject(InputSource source)
}

class XmlReader1_3 implements XmlReaderBase {
public void readObject(InputSource source) {
// implementation jdk 1.3
}
}
class XmlReader1_4 implements XmlReaderBase {
public void readObject(InputSource source) {
// implementation jdk 1.4
}
}

class MyXmlReaderFactory {
public static readObject(InputSource source) {

// choisir le bon reader en récupérant le nom de
//l'implémentation dans un fichier properties par exemple

Class c = Class.forName(nom_de_la_classe);
XmlReaderBase reader= (XmlReaderBase ) c.newInstance();
reader.readObject(source);
}
}

Olivier

Avatar
pcouas
Avatar
TestMan
Bonsoir

J'utilise une methode pour parser du XML,seulement celle ci est code
differament suivant que je suis en JDK 1.3 OU 1.4 (je sais il y a plus
récent, mais des vieux serveurs resistent encore !)

Est il possible par compilation conditionnelle ou par ClassForName de
faire Cohabiter les deux ????
Merci d'avance de vos réponses
Philippe



En JDK 1.4 elle est code comme cela


public void readObject(InputSource source)
throws IOException
{
try
{
SAXParserFactory parserFact > SAXParserFactory.newInstance();
parserFact.setNamespaceAware(true);
SAXParser parser > parserFact.newSAXParser();
parser.parse(source, this); //Inclus dans le jdk 1.4 (rt.jar)
}
catch (ParserConfigurationException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
catch (SAXException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
}



Alors qu'en JDK 1.3, et j'ai des clients avec AIX 4.3 elle es code
comme cela

public void readObject(InputSource source)
throws IOException
{
try
{
XMLReader parser = XMLReaderFactory.createXMLReader();
parser.setContentHandler(this);
parser.parse(source);
}
catch (SAXException exc)
{
throw new IOException(
"Error parsing XML document: "+exc.toString());
}
}



Bonjour,

Pourquoi tu utilises pas directement du code JAXP ?
Que je sache c'est une extensions standard, il peut donc même
s'installer sur d'anciens JDK ...

Plus sur https://jaxp.dev.java.net/1.3/index.html

A+
TM

Avatar
pcouas
je n'y avait pas pensé merci