Je développe l'application mobile asp.net. J'utilise XML comme base de données. J'interroge sur le XML pour accéder aux attributs requis des éléments & en utilisant LINQ to XML dans .net. J'ai la partie suivante dans mon fichier XML.Comment écrire une seule requête LINQ to XML pour parcourir tous les éléments enfants et tous les attributs des éléments enfants?
<VALVES>
<VALVE NAME="PWV">
<DISPLAY-NAME>
Production Master Valve
</DISPLAY-NAME>
<COMMANDS USE-TEMPLATE="TRUE" TEAMPLATE-NAME="ValveCommands.xml"></COMMANDS>
</VALVE>
<VALVE NAME="PMV" >
<DISPLAY-NAME>
Production Wing Valve
</DISPLAY-NAME>
<COMMANDS USE-TEMPLATE="TRUE" TEAMPLATE-NAME="ValveCommands.xml"></COMMANDS>
</VALVE>
</VALVES>
Dans le fichier XML ci-dessus, je peux accéder au nœud d'élément enfant « VALVE » & son attribut « NAME » dynamiquement sans spécifier explicitement le nom de l'attribut en utilisant le code suivant. Ainsi, lorsque tout nouvel attribut est ajouté dans le noeud enfant 'VALVE', je peux y accéder sans modifier mon code existant. Pour une telle logique, j'utilise le code suivant. Dans le code suivant ValvesProperties est le Hashtable qui est défini dans la classe 'Valves'.
static int count = 0;
List<Valves> LstValves = new List<Valves>();
string AttName = null;
string AttValue = null;
XDocument FieldDef = XDocument.Load(@"F:\Shailesh from user OPC\XML\KK3.xml");
XElement FieldRoot = FieldDef.Element("KK");
count = FieldRoot.Element("FIELD-DEFINITION").Element("VALVES").Elements("VALVE").Count();
Valves[] Valveobj = new Valves[count];
count = 0;
foreach (var element in FieldRoot.Element("FIELD-DEFINITION").Element("VALVES").Elements())
{
Valveobj[count] = new Valves();
foreach (var attribute in element.Attributes())
{
AttName = attribute.Name.ToString();
AttValue = attribute.Value.ToString();
Valveobj[count].ValvesProperties.Add(AttName, AttValue);
LstValves.Add(Valveobj[count]);
}
count++;
}
return LstValves;
La logique similaire dont j'ai besoin pour la partie XML définie ci-dessus. Dans le XML ci-dessus je veux écrire la requête LINQ to XML qui peut accéder à l'attribut NAME du noeud 'VALVE' (<VALVE NAME="PWV">
), alors il devrait accéder au texte entre 'DISPLAY-NODE' (<DISPLAY-NAME> Production Master Valve </DISPLAY-NAME>
), & alors il devrait accéder tous les attributs du noeud 'COMMAND' dynamiquement (<COMMANDS USE-TEMPLATE="TRUE" TEAMPLATE-NAME="ValveCommands.xml"></COMMANDS>
). Tout ce que je veux dynamiquement sans spécifier explicitement le nom du nœud enfant ainsi que le nom de leurs attributs (similaire à la façon dont j'ai écrit la requête ci-dessus) Pouvons-nous écrire un tel code en utilisant LINQ to XML? Il vaudra mieux que nous puissions écrire du code pour le problème ci-dessus dans une seule logique (similaire à la façon dont j'ai écrit la requête ci-dessus). Pouvez-vous me fournir le code ou le lien par lequel je peux résoudre le problème ci-dessus?
Si vous publiez code ou XML, ** ** S'il vous plaît mettre en évidence les lignes dans l'éditeur de texte et cliquez sur le « code "bouton (101 010) sur la barre d'outils de l'éditeur pour bien le mettre en forme et la syntaxe le mettre en évidence! –