2011-09-19 6 views
1

J'ai donc ce code pour analyser les fichiers xml. Ce que j'ai besoin de faire est de vérifier les valeurs qui sont dans la gamme et d'écrire si elle réussit/échoue. Je ne suis pas sûr si mon code: "où" les déclarations sont correctes. J'ai besoin du code pour rechercher le "Max" et "Min" de chaque déclaration et pour écrire par exemple XMax la valeur est inférieure à 287 il est passé et plus grand que échoué.Test réussite/échec de l'analyse xml

string[] fileEntries = Directory.GetFiles(@"c:\Sciclone UAC", "*.cfg*"); 
     foreach (string fileName in fileEntries) 
     { 

      var query = from file in fileEntries 
         let doc = XDocument.Load(file) 
         let x = doc.Descendants("XAxisCalib").Single() 
         where (int)x.Attribute("Max") > 287 
         where (int)x.Attribute("Min") < -50 
         let y = doc.Descendants("YAxisCalib").Single() 
         where (int)y.Attribute("Max") > 645 
         where (int)y.Attribute("Min") > -87 
         let z = doc.Descendants("ZAxisCalib").Single() 
         where (int)z.Attribute("Max") > 20 
         where (int)z.Attribute("Min") > -130 
         select new 
         { 

          XMax = x.Element("Max").Value, 
          XMin = x.Element("Min").Value, 
          YMax = y.Element("Max").Value, 
          YMin = y.Element("Min").Value, 
          ZMax = z.Element("Max").Value, 
          ZMin = z.Element("Min").Value 
         }; 

Voici un exemple de ce qu'un fichier xml ressemble:

<XAxisCalib> 
     <Max>281.68</Max> 
     <Min>-46.79</Min> 
    </XAxisCalib> 
    <YAxisCalib> 
     <Max>570.57</Max> 
     <Min>-123.24</Min> 
    </YAxisCalib> 
    <ZAxisCalib> 
     <Max>31.01</Max> 
     <Min>-100.95</Min> 
+0

voulez-vous qu'il écrive Pass ou Fail pour chaque nœud, ou pour l'objet dans son ensemble? – msarchet

+0

Pour chaque nœud pour déterminer l'échec de réussite. –

Répondre

0

Eh bien votre approche semble un peu faible pour moi, parce que l'utilisateur peut potentiellement des erreurs et écrire des déchets au lieu d'un int, donc votre où échouera. Ne vaut-il pas mieux utiliser une approche xsd pure et ensuite valider les entités uniques? En tant qu'expérience personnelle, avoir un XSD pour valider ethe xml simple, et une validation par entité conduisent à un code facile à maintenir et à étendre, même si l'inpuit est généré par machine (puisque parfois les spécifications changent;)) donc je préférerais l'ancien fashon way au lieu de linq à XML pour résoudre ce genre de situation, mais est juste mon opinion venant de mon expérience.

+0

Le fichier xml est créé à partir d'une construction de machine, ce sera toujours une valeur de nombre entier. Mon code pourrait être complètement faux que peut-être le cas c'est pourquoi je suis ici en cherchant l'aide de la meilleure manière d'écrire ce code. –

+0

@Casey la meilleure façon, pour moi est d'avoir un XSD pour valider la forme, puis avoir une valiodation basée sur l'entité, vous obtenez un code plus facile à étendre et à maintenir. –