Je travaille actuellement sur du xml.
Trés exactement, j'ai pris un fichier xml "reel", j'ai fait generer
son schema par VS2005, puis creer la classe de traitement par xsd.exe
Le probleme, c'est que ce genre d'automatisme, si c'est déjà trés
bien, c'est pas parfait. Genre, si dans mon xml de base, j'avais un
champ de valeur 1, il me le type en Byte, du coup, si ce même champ
peut prendre la valeur de 300, bah, la classe déclenche une exception
lors de la deserialization, tres logiquement.
Enfin bref. La ou je veux venir, c'est est ce qu'il y a un moyen a
partir de l'exception pour savoir quel champ exactement a provoqué
l'erreur ?(sans mettre des try catch dasn tout le code autogeneré, ce
qui serait assez contreproductif, a moins qu'il y ait un outil
autmatique pour ca :))
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frederic Melantois
Bonsoir,
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement vous-même en int (via le designer ou l'éditeur xml) ?
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma n'est pas bon, la classe ne sera pas celle que vous attendiez.
Frédéric Mélantois
"Guillaume JAY" a écrit dans le message de news:
Je travaille actuellement sur du xml. Trés exactement, j'ai pris un fichier xml "reel", j'ai fait generer son schema par VS2005, puis creer la classe de traitement par xsd.exe
Le probleme, c'est que ce genre d'automatisme, si c'est déjà trés bien, c'est pas parfait. Genre, si dans mon xml de base, j'avais un champ de valeur 1, il me le type en Byte, du coup, si ce même champ peut prendre la valeur de 300, bah, la classe déclenche une exception lors de la deserialization, tres logiquement.
Enfin bref. La ou je veux venir, c'est est ce qu'il y a un moyen a partir de l'exception pour savoir quel champ exactement a provoqué l'erreur ?(sans mettre des try catch dasn tout le code autogeneré, ce qui serait assez contreproductif, a moins qu'il y ait un outil autmatique pour ca :))
Merci,
Guillaume
Bonsoir,
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un
schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en
byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement
vous-même en int (via le designer ou l'éditeur xml) ?
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma
n'est pas bon, la classe ne sera pas celle que vous attendiez.
Frédéric Mélantois
"Guillaume JAY" <gjay_diespammer-die@free.fr> a écrit dans le message de
news: 9rod91tkpo9ksnao74tfmurt058f5olpgl@4ax.com...
Je travaille actuellement sur du xml.
Trés exactement, j'ai pris un fichier xml "reel", j'ai fait generer
son schema par VS2005, puis creer la classe de traitement par xsd.exe
Le probleme, c'est que ce genre d'automatisme, si c'est déjà trés
bien, c'est pas parfait. Genre, si dans mon xml de base, j'avais un
champ de valeur 1, il me le type en Byte, du coup, si ce même champ
peut prendre la valeur de 300, bah, la classe déclenche une exception
lors de la deserialization, tres logiquement.
Enfin bref. La ou je veux venir, c'est est ce qu'il y a un moyen a
partir de l'exception pour savoir quel champ exactement a provoqué
l'erreur ?(sans mettre des try catch dasn tout le code autogeneré, ce
qui serait assez contreproductif, a moins qu'il y ait un outil
autmatique pour ca :))
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement vous-même en int (via le designer ou l'éditeur xml) ?
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma n'est pas bon, la classe ne sera pas celle que vous attendiez.
Frédéric Mélantois
"Guillaume JAY" a écrit dans le message de news:
Je travaille actuellement sur du xml. Trés exactement, j'ai pris un fichier xml "reel", j'ai fait generer son schema par VS2005, puis creer la classe de traitement par xsd.exe
Le probleme, c'est que ce genre d'automatisme, si c'est déjà trés bien, c'est pas parfait. Genre, si dans mon xml de base, j'avais un champ de valeur 1, il me le type en Byte, du coup, si ce même champ peut prendre la valeur de 300, bah, la classe déclenche une exception lors de la deserialization, tres logiquement.
Enfin bref. La ou je veux venir, c'est est ce qu'il y a un moyen a partir de l'exception pour savoir quel champ exactement a provoqué l'erreur ?(sans mettre des try catch dasn tout le code autogeneré, ce qui serait assez contreproductif, a moins qu'il y ait un outil autmatique pour ca :))
Merci,
Guillaume
Guillaume JAY
On Fri, 27 May 2005 22:27:58 +0200, "Frederic Melantois" wrote:
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement vous-même en int (via le designer ou l'éditeur xml) ?
Rien, une fois que je sais le champ qui "plante". Ce n'est pas ma question.
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma n'est pas bon, la classe ne sera pas celle que vous attendiez.
Bien sur. Mais le schema etant généré automatiqument a partir d'un fichier xml de données, VS2005 fait ce qu'il peut, et a ce que j'ai pu voir, a tendance a essayer d'economiser les octets sur les entier. Seulement, voila, avec un autre xml de données, ca passe pas. (Incidemment, il ne s'agit pas d'un dataset, mais d'une classe)
Enfin, bref, le probleme n'est pas de solutionner le probleme, ou de comprendre pourquoi il y en a un.
Reprenons : le xml ne correspond pas a mon xsd. L'exception déclenchée à la deserialization est assez générale (pour ce que j'en ai vu), et notamment, ne me donne pas quel champ contient des données invalides. Est il possible d'obtenir ce champ pour l'afficher dans ma msgbox d'erreur ?
(Parceque bien, sur, je peux faire un chercher remplacer sur ma classe générée de tous les bytes par des integers, et j'aurai plus de souci, mais je voudrai une solution plus élégante, surtout qu'il n'y pas que ce type d'erreur)
Guillaume
On Fri, 27 May 2005 22:27:58 +0200, "Frederic Melantois"
<fmelantois@nospam.com> wrote:
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un
schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en
byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement
vous-même en int (via le designer ou l'éditeur xml) ?
Rien, une fois que je sais le champ qui "plante". Ce n'est pas ma
question.
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma
n'est pas bon, la classe ne sera pas celle que vous attendiez.
Bien sur. Mais le schema etant généré automatiqument a partir d'un
fichier xml de données, VS2005 fait ce qu'il peut, et a ce que j'ai pu
voir, a tendance a essayer d'economiser les octets sur les entier.
Seulement, voila, avec un autre xml de données, ca passe pas.
(Incidemment, il ne s'agit pas d'un dataset, mais d'une classe)
Enfin, bref, le probleme n'est pas de solutionner le probleme, ou de
comprendre pourquoi il y en a un.
Reprenons : le xml ne correspond pas a mon xsd. L'exception déclenchée
à la deserialization est assez générale (pour ce que j'en ai vu), et
notamment, ne me donne pas quel champ contient des données invalides.
Est il possible d'obtenir ce champ pour l'afficher dans ma msgbox
d'erreur ?
(Parceque bien, sur, je peux faire un chercher remplacer sur ma classe
générée de tous les bytes par des integers, et j'aurai plus de souci,
mais je voudrai une solution plus élégante, surtout qu'il n'y pas que
ce type d'erreur)
On Fri, 27 May 2005 22:27:58 +0200, "Frederic Melantois" wrote:
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement vous-même en int (via le designer ou l'éditeur xml) ?
Rien, une fois que je sais le champ qui "plante". Ce n'est pas ma question.
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma n'est pas bon, la classe ne sera pas celle que vous attendiez.
Bien sur. Mais le schema etant généré automatiqument a partir d'un fichier xml de données, VS2005 fait ce qu'il peut, et a ce que j'ai pu voir, a tendance a essayer d'economiser les octets sur les entier. Seulement, voila, avec un autre xml de données, ca passe pas. (Incidemment, il ne s'agit pas d'un dataset, mais d'une classe)
Enfin, bref, le probleme n'est pas de solutionner le probleme, ou de comprendre pourquoi il y en a un.
Reprenons : le xml ne correspond pas a mon xsd. L'exception déclenchée à la deserialization est assez générale (pour ce que j'en ai vu), et notamment, ne me donne pas quel champ contient des données invalides. Est il possible d'obtenir ce champ pour l'afficher dans ma msgbox d'erreur ?
(Parceque bien, sur, je peux faire un chercher remplacer sur ma classe générée de tous les bytes par des integers, et j'aurai plus de souci, mais je voudrai une solution plus élégante, surtout qu'il n'y pas que ce type d'erreur)
Guillaume
Frederic Melantois
Bonjour,
Nous nous sommes pas compris.
Il faut que le schema soit bon et pour cela, il faut que vous connaissiez le typage à effectuer sur chaque champ. C'est pour cela que vous devez impérativement modifier le schema si nécessaire si vous voulez que le dataset hérité généré par xsd corresponde à votre fichier xml.
Pour l'exception, vous pouvez exploiter les InnerExceptions successifs.
Frédéric Mélantois
"Guillaume JAY" a écrit dans le message de news:
On Fri, 27 May 2005 22:27:58 +0200, "Frederic Melantois" wrote:
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement vous-même en int (via le designer ou l'éditeur xml) ?
Rien, une fois que je sais le champ qui "plante". Ce n'est pas ma question.
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma n'est pas bon, la classe ne sera pas celle que vous attendiez.
Bien sur. Mais le schema etant généré automatiqument a partir d'un fichier xml de données, VS2005 fait ce qu'il peut, et a ce que j'ai pu voir, a tendance a essayer d'economiser les octets sur les entier. Seulement, voila, avec un autre xml de données, ca passe pas. (Incidemment, il ne s'agit pas d'un dataset, mais d'une classe)
Enfin, bref, le probleme n'est pas de solutionner le probleme, ou de comprendre pourquoi il y en a un.
Reprenons : le xml ne correspond pas a mon xsd. L'exception déclenchée à la deserialization est assez générale (pour ce que j'en ai vu), et notamment, ne me donne pas quel champ contient des données invalides. Est il possible d'obtenir ce champ pour l'afficher dans ma msgbox d'erreur ?
(Parceque bien, sur, je peux faire un chercher remplacer sur ma classe générée de tous les bytes par des integers, et j'aurai plus de souci, mais je voudrai une solution plus élégante, surtout qu'il n'y pas que ce type d'erreur)
Guillaume
Bonjour,
Nous nous sommes pas compris.
Il faut que le schema soit bon et pour cela, il faut que vous connaissiez le
typage à effectuer sur chaque champ. C'est pour cela que vous devez
impérativement modifier le schema si nécessaire si vous voulez que le
dataset hérité généré par xsd corresponde à votre fichier xml.
Pour l'exception, vous pouvez exploiter les InnerExceptions successifs.
Frédéric Mélantois
"Guillaume JAY" <gjay_diespammer-die@free.fr> a écrit dans le message de
news: re2g91tfgf93anjpnr9vpufviskr77troq@4ax.com...
On Fri, 27 May 2005 22:27:58 +0200, "Frederic Melantois"
<fmelantois@nospam.com> wrote:
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué
un
schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en
byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement
vous-même en int (via le designer ou l'éditeur xml) ?
Rien, une fois que je sais le champ qui "plante". Ce n'est pas ma
question.
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma
n'est pas bon, la classe ne sera pas celle que vous attendiez.
Bien sur. Mais le schema etant généré automatiqument a partir d'un
fichier xml de données, VS2005 fait ce qu'il peut, et a ce que j'ai pu
voir, a tendance a essayer d'economiser les octets sur les entier.
Seulement, voila, avec un autre xml de données, ca passe pas.
(Incidemment, il ne s'agit pas d'un dataset, mais d'une classe)
Enfin, bref, le probleme n'est pas de solutionner le probleme, ou de
comprendre pourquoi il y en a un.
Reprenons : le xml ne correspond pas a mon xsd. L'exception déclenchée
à la deserialization est assez générale (pour ce que j'en ai vu), et
notamment, ne me donne pas quel champ contient des données invalides.
Est il possible d'obtenir ce champ pour l'afficher dans ma msgbox
d'erreur ?
(Parceque bien, sur, je peux faire un chercher remplacer sur ma classe
générée de tous les bytes par des integers, et j'aurai plus de souci,
mais je voudrai une solution plus élégante, surtout qu'il n'y pas que
ce type d'erreur)
Il faut que le schema soit bon et pour cela, il faut que vous connaissiez le typage à effectuer sur chaque champ. C'est pour cela que vous devez impérativement modifier le schema si nécessaire si vous voulez que le dataset hérité généré par xsd corresponde à votre fichier xml.
Pour l'exception, vous pouvez exploiter les InnerExceptions successifs.
Frédéric Mélantois
"Guillaume JAY" a écrit dans le message de news:
On Fri, 27 May 2005 22:27:58 +0200, "Frederic Melantois" wrote:
Si j'ai bien tout compris : Vous aviez un fichier xml, vous avez fabriqué un schema. Vous nous dites : j'ai une valeur de 1, le champ est alors typé en byte dans le schema. Qu'est-ce qui vous empêche de le typer correctement vous-même en int (via le designer ou l'éditeur xml) ?
Rien, une fois que je sais le champ qui "plante". Ce n'est pas ma question.
L'utilitaire xsd génère un dataset dérivé fidèle au schéma. Si le schéma n'est pas bon, la classe ne sera pas celle que vous attendiez.
Bien sur. Mais le schema etant généré automatiqument a partir d'un fichier xml de données, VS2005 fait ce qu'il peut, et a ce que j'ai pu voir, a tendance a essayer d'economiser les octets sur les entier. Seulement, voila, avec un autre xml de données, ca passe pas. (Incidemment, il ne s'agit pas d'un dataset, mais d'une classe)
Enfin, bref, le probleme n'est pas de solutionner le probleme, ou de comprendre pourquoi il y en a un.
Reprenons : le xml ne correspond pas a mon xsd. L'exception déclenchée à la deserialization est assez générale (pour ce que j'en ai vu), et notamment, ne me donne pas quel champ contient des données invalides. Est il possible d'obtenir ce champ pour l'afficher dans ma msgbox d'erreur ?
(Parceque bien, sur, je peux faire un chercher remplacer sur ma classe générée de tous les bytes par des integers, et j'aurai plus de souci, mais je voudrai une solution plus élégante, surtout qu'il n'y pas que ce type d'erreur)