Salut,
Ce post est à la limite entre le développement web et le c# mais je pense que c'est là qu'il est le mieux.
Je travaille actuellement sur un petit ETL qui récupère des informations dans une structure XML et qui les injecte dans une autre structure XML.
Ca aurait pu être relativement simple si nous ne nous étions pas appuyés sur un fichier xsd qui fait référence à d'autres fichiers XSD pour définir les préfixes.
petit rappel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<chien type="xsd:animal"/>
Voici le code qui me pose problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <animal:chien/>
Mon problème est que lorsque la chaine xml que je veux injecter utilise un préfixe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 XElement xElement = GetNodeWithXPath(); XNode xNodeToCreate = null; XmlNamespaceManager nsMgr = GetNameSpaces(); XmlParserContext parCxt = new XmlParserContext(null, nsMgr, null, XmlSpace.Default); using (XmlReader xmlReader = XmlReader.Create(new StringReader(base.ValueExpression), null, parCxt)) { xmlReader.MoveToContent(); xNodeToCreate = XNode.ReadFrom(xmlReader); } if (xNodeToCreate != null) { xElement.Add(xNodeToCreate); } return base.SetupFile_String;
<flt:logo ....>
lorsque j'utilise le parsing context, la node générée ne contient plus le préfixe mais contient un xmlns...
Bref, les XPath que j'avais définit pour accéder à mes nodes ne peuvent plus fonctionner.
Je cherche un moyen d'injecter des nodes avec préfixe sans que l'injection ne transforme la structure de ma node.
Je ne sais pas si ça vous parle, mais si vous avez quelques expériences sur le sujet, vos conseils seront les bienvenus.
D'avance merci
Laurent
Partager