-1
votes

Comment puis-je ignorer si la valeur est null lors de la correspondance XML

J'ai une méthode où je correspond aux fichiers XML. Les deux XML ont le même clientfnr. Mais j'essaie d'obtenir toutes les informations de la fois et de le faire correspondre à un XML. Cela fonctionne bien. Mais parfois, le DOC1 a quelques identifiants qui n'existent pas dans DOC2 (NULL). Et c'est ce que j'ai besoin de sauter et de continuer.

xml1: xxx

xml2: xxx

ce que j'ai essayé avec c # xxx

et cela fonctionne très bien. Mais quand je frappe un clientfnr où la valeur n'existe pas dans doc2 i obtenez cette erreur xxx

aucune idée, Comment ignoroir si la clientèle n'existe pas dans DOC2


3 commentaires

C'est parce que vous utilisez FirstODEDFault () , qui retourne null si aucun élément n'a été trouvé. Ensuite, vous appelez directement .elements () sur ce qui pourrait potentiellement être null . Vous pouvez soit diviser, de sorte que vous appelez firstordfault , attribuez ce résultat à une variable, puis vérifiez s'il est null ou non. Ou, si rien d'autre s'en soucie si c'est NULL, utilisez l'opérateur null-conditionnel


Merci :) ça m'a aidé


Pas de problème, je saisie actuellement une réponse qui passe plus détaillée expliquant les deux solutions


3 Réponses :


0
votes

Que diriez-vous de vérifier si la fonction où la fonction a renvoyé des éléments? Changement: xxx

à: xxx


0 commentaires

0
votes

Une autre solution si votre C # -version est suffisamment haut (c'est-à-dire ne pas construire pour une très ancienne version .NET), serait d'utiliser le ?. -Oupérateur, qui exécute la fonction lorsque le Le côté gauche n'est pas nul et renvoie null si le côté gauche est null : Doc2elements.Où (x => x.tostring (). Indexof (clientfrefnr)> -1) .Firstordefault () ?. Éléments () ?. Tolist ();

puis doc2childs sera null lorsque le firstordefault renvoyé null . .

Si vous voulez que ce soit une liste vide lorsque cela se produit, vous pouvez faire Doc2elements.Où (x => x.tostring (). Indexof (clientfrefnr)> -1) .Firstordefault () ?. Éléments ()?. Tolist () ?? nouvelle liste ();

Ceci provoque la création d'une nouvelle liste lorsque le côté gauche est null

résumer: a ?? b est court pour a == null? B: A tandis que a? .b est court pour a == null? NULL: A.B


0 commentaires

0
votes

Il y a 2 solutions à votre problème, en fonction de ce que vous souhaitez faire si vous rencontrez une valeur nulle dans l'un de vos fichiers XML

  1. Ignorez-le et déplacez-le sur li>
  2. reconnaît-le et
    • passer sur li>
    • Skip li>
    • pause li> ul> li> OL>

      1: P>

      var doc2TempResult = doc2Elements.Where(x => x.ToString().IndexOf(ClientRefNr) > -1).FirstOrDefault();
      
      // Instead of continue, you could also break, or do whatever you want/ need
      if (doc2TempResult is null || !(doc2TempResult.Elements() is IEnumerable<XElement> doc2Elements))
          continue;
      
      var doc2Childs = doc2Elements.ToList()
      


0 commentaires