begin process at 2013 05 24 00:43:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

XML

 > 

Aide sur les fichier XML


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide sur les fichier XML

mardi 19 juin 2012 à 08:27:02 | Aide sur les fichier XML

johnnous


Bonjour
j'ai le fichier XML suivant
<resources xmlns="http://www.kuka.com/schemas/kxr/2009">
<module name="Appli_KF">
<uiText key="MessageSUB1">
<text xml:lang="de-DEV">No Pressure</text>
<text xml:lang="en-DEV">No Pressure</text>
<text xml:lang="fr-DEV">Manque presence air</text>
<text xml:lang="es-DEV">spain</text>
</uiText>
<uiText key="MessageSUB2">
<text xml:lang="de-DEV">robot vartung stellung</text>
<text xml:lang="en-DEV">Robot in parking position</text>
<text xml:lang="fr-DEV">Robot au repli</text>
</uiText>
</module>
</resources>
et je voudrais recuper l'info du message en fonction de la langue
j'ai essayer avec System.Xml.Linq; mais je n'arrive pas a grand chose
XmlDocument xmlDoc = new XmlDocument();
//Load xml
string filename = @"C:\KRC\DATA\Appli_KF.kxr";
XDocument xdoc = XDocument.Load(filename);
// XDocument xdoc = XDocument.Load(@"C:\KRC\DATA\Test.kxr");
XElement xElement = XElement.Load(filename);
//recupere l attribut xmlns ex xmlns="http://www.kuka.com/schemas/kxr/2009">
XNamespace p = xElement.Attribute("xmlns").Value;
var lv1s = (from lv1 in xdoc.Descendants(p + "module")
where ((string)lv1.Attribute("name") == "Appli_KF")
select new
{
Header = lv1.Attribute("name").Value,
Mess = (
from uiText in lv1.Descendants(p + "uiText")
where ((string)uiText.Attribute("key")== "MessageSUB1")
select new DroitTFS
{
Name = uiText.Attribute("key").Value,
}
).ToList<DroitTFS>()
}
);

//Loop through results
foreach (var lv2 in lv1s)
{

MessageBox.Show(lv2.Header +":"+ lv2.Mess[0].Name );
}

quelqu'un peut m'aider
Jean louis
mardi 19 juin 2012 à 14:09:47 | Re : Aide sur les fichier XML

buno

Administrateur CodeS-SourceS
Hello,
Merci de formater un peu mieux ta demande...


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 19 juin 2012 à 16:01:16 | Re : Aide sur les fichier XML

whismeril

Réponse acceptée !
Code C# :
Bonjour

avec VS express 2008 xmlns="http://www.kuka.com/schemas/kxr/2009 ne passe pas avec Linq (je n'ai pas trop cherché pourquoi). Pour faire mes essais j'ai donc modifié ton exemple xml comme suit

Code XML :
<resources> 
<module name="Appli_KF"> 
<uiText key="MessageSUB1"> 
<text xml:lang="de-DEV">No Pressure</text> 
<text xml:lang="en-DEV">No Pressure</text> 
<text xml:lang="fr-DEV">Manque presence air</text> 
<text xml:lang="es-DEV">spain</text> 
</uiText> 
<uiText key="MessageSUB2"> 
<text xml:lang="de-DEV">robot vartung stellung</text> 
<text xml:lang="en-DEV">Robot in parking position</text> 
<text xml:lang="fr-DEV">Robot au repli</text> 
</uiText> 
</module> 
</resources>



J'ai crée 3 classes:
Code C# :
        /// <summary>
        /// Classe décrivant un module avec un nom et une liste de messages
        /// </summary>
        class Module
        {
            public string Nom { get; set; }
            public List<MessageSub> Messages { get; set; }
        }

        /// <summary>
        /// Classe décrivant un message avec une clé et une liste de textes multilingues
        /// </summary>
        class MessageSub
        {
            public string Key { get; set; }
            public List<UneLangue> Langues { get; set; }
        }

        /// <summary>
        /// Classe décirvant une traduction
        /// </summary>
        class UneLangue
        {
            public string Langue { get; set; }
            public string Texte { get; set; }
        }



et la méthode pour charger le xml
Code C# :
        private void TestXML()
        {
            //Load xml 
            string filename = Application.StartupPath + @"\toto.xml";
            XDocument xDoc = XDocument.Load(filename);

            List<Module> mesModules;// quand on peut éviter une variable de type var s'est mieux

            mesModules = (from monModule in xDoc.Descendants("module")//dans xDoc, on passe en revue chaque occurence de "module"
                          select new Module//crée une nouvelle instance de ma classe Module
                          {
                              Nom = monModule.Attribute("name").Value,// on extrait l'attribut mane de l'occurence en cours
                              Messages = (from monMessage in monModule.Descendants("uiText")//dans monModule, on passe en revue chaque occurence de "uiText"

                                          select new MessageSub
                                           {
                                               Key = monMessage.Attribute("key").Value,//on extrait l'attribut key
                                               Langues = (from maLangue in monMessage.Descendants("text") //dans un message, on passe en revue chaque occurence de "text"
                                                          select new UneLangue
                                                          {
                                                              Langue = maLangue.FirstAttribute.Value,
                                                              Texte = maLangue.Value
                                                          }).ToList<UneLangue>()//direct en List<UneLangue> dans le champ Langues

                                           }).ToList<MessageSub>()//direct en List<MessageSub> dans le champ Messages

                          }).ToList<Module>();//direct en List<Module> dans la variable mesModules

        }


Pour completer ce que dit Buno je t'invite à lire cette citatiopn de NHenry et les liens associés:

  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
  3. En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
  4. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.



Whismeril


mardi 19 juin 2012 à 16:32:41 | Re : Aide sur les fichier XML

johnnous


j'ai essayer ça et cela à l'air de marcher merci Whismeril
je vais tenir compte de tes remarques et modifié mon encore merci

Code C# :
class cXml
    {
        private List<cMsg> Msg = new List<cMsg>();
        class cMsg
        {
            public string Translate = "";
        }
        public string filename { get; set; }
        public string MsgNotfound { get; set; }
        public bool User { get; set; }
     
        public string FindMessage(string TypeMess, decimal numMess, string LangKey)
        {
            XmlDocument xmlDoc = new XmlDocument();
            //Load xml
            XDocument xDoc = XDocument.Load(filename);
            XElement xElement = XElement.Load(filename);
            //recupere l attribut xmlns ex xmlns="http://www.kuka.com/schemas/kxr/2009">
            XNamespace xmlns = xElement.Attribute("xmlns").Value;
            string key="Syst_WopMess" + TypeMess + numMess.ToString();
            if (User) key = "User_WopMess" + TypeMess + numMess.ToString();
            Msg = (from msgKey in xDoc.Descendants(xmlns + "text") // Je viens directement au noeud suscitant l'intérêt
                   where (((string)msgKey.Parent.Attribute("key") == key)
                          && ((string)msgKey.FirstAttribute == LangKey))
                   select new cMsg
                   {
                       Translate = (string)msgKey.Value,
                   }
                     ).ToList<cMsg>();
            if (Msg.Count > 0)
                return Msg[0].Translate;
            else
                return MsgNotfound;

        }


Jean louis
mardi 19 juin 2012 à 17:14:36 | Re : Aide sur les fichier XML

whismeril

De rien


Whismeril


Cette discussion est classée dans : load, xml, in, attribute, xdocument


Répondre à ce message

Sujets en rapport avec ce message

C# Xml attribute [ par shad252 ] Bonjour, voila mon probleme : je creer un fhichier xml avec differents elements... Plus tard je veux ajouter un attribut à un de mes elements par exem XML, XSL et Date [ par creanova2000 ] Bonjour ,J'essaye de faire une xml transormation en utilisant un fichier xsl Tout Fonctionne sauf une chose qui n'est pas bien C'est que les date sont Problème XML/XSD [ par granghon ] Bonjour,Je ne suis pas sur de poser ma question sur le bon thème mais c'est celui qui à mon goût s'en rapproche le plus.J'utilise un fichier XML pour DataSet vers XML avec un schéma imposé [ par Cydreav ] Bonjour, je voudrais savoir s'il est possible d'imposer le schéma de la feuille xml générée par la fonction WriteXml() J'ai vu des WriteSchema() et de Suppression de noeud XML [ par emachede ] bonjour, je veux supprimer un noeud bien précis dans mon xml j'utilise la commande: objRoot.RemoveChild(monNoeud); avec objRoot = objXmlDoc.Document Sérialiser une arraylist [ par el_teedee ] Bonjour, alors, je viens de découvrir la sérialisation et juste après, j'ai découvert arraylist dont je ne méttais jamais servi. Ce que je souhaite [C#] SOAP & XML [ par scoubidou944 ] Il semvlerait que j'ai enfin trouvé la solution de sauvegarde XML à partir de : http://www.c2i.fr/code.aspx?IDCode=413 Par contre, le fichier XML de URGENT Comment creer un fichier XML avec c# [ par titio069 ] Bonjours et merci de votre aide. Voila le probleme.  J'ai un fichier xml a créer en c# (de preference) ou en vb.net. Je dois mettre des valeur d'une r Datagrid et plusieurs fichiers XML [ par sergio297 ] Salut a tous,Je debute avec C#.NET, merci d'etre indulgent...J'ai un certain nombre de fichiers XML dont la structure est la meme. Mon but est de cree [C#] SOAP & Serialization [ par scoubidou944 ] mon code marche enfin à moitié. lors de la désérialisation, je me prend souvent SerializationException : Erreu d'analyse, aucun assembly associé à la


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,146 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales