0
votes

LINQ à XML Terminé Élément enfant XL Structure

J'essaie de ne pas utiliser l'ancienne façon de lire xml et d'essayer de tenter de linq à XML, mais je passe du temps difficile à accomplir ce qui suit:

réponse XML < / p> xxx

Je fais cela en C # xxx

avec ce code, je suis capable de lire le détaillant BotReponse, mais quoi Je veux qu'il ne contienne que la structure XML détailléeResponse avec le égal à actif. Est-ce possible. Je parvienne à recueillir des données spécifiques basées sur les noms d'éléments et à la manière dont je peux conserver toute la structure de l'élément d'enfant XML (détailResponse élément à ses enfants) à l'aide de LINQ à XML.

Merci


0 commentaires

3 Réponses :


1
votes

Vous pouvez obtenir les éléments où a la valeur active en filtrant le éléments utilisant el. Descendants ("StratégstatusSesc") , puis sélectionnez ces éléments ayant la valeur active .

Utilisation de la syntaxe de requête: xxx

ou à l'aide de la syntaxe de la méthode: xxx


0 commentaires

1
votes

dans votre échantillon XML là dans un problème invalide tag que j'ai supprimé

Voici le code que vous pouvez utiliser pour votre résultat xxx


1 commentaires

.Parfait!! Merci pour ton aide!



1
votes

J'utilise souvent le code comme ci-dessous qui donne des résultats plus plats que d'utiliser la sérialisation:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement xPolicyResponse = doc.Descendants("PolicyResponse").FirstOrDefault();

            PolicyResponse policyResponse = new PolicyResponse(xPolicyResponse); 

        }
    }
    public class PolicyResponse
    {
        public ServiceResponse serviceResponse { get; set; }
        public List<DetailResponse> detailResponse { get; set; }

        public PolicyResponse() {}
        public PolicyResponse(XElement element)
        {
            XElement xServiceResponse = element.Element("serviceResponse");
            List<XElement> xdetailResponseList = element.Descendants("detailResponse").ToList();
            serviceResponse = new ServiceResponse(xServiceResponse);
            detailResponse = xdetailResponseList.Select(x => new DetailResponse(x)).ToList();

        }
    }
    public class ServiceResponse
    {
        public int responseCode { get; set; }
        public string responseDescription { get; set; }
        public string responseDetail { get; set; }
        public int pageNum { get; set; }
        public int pageSize { get; set; }
        public int totalRecords { get; set; }

        public ServiceResponse() { }
        public ServiceResponse(XElement element)
        {
            responseCode = (int)element.Element("responseCode");
            responseDescription = (string)element.Element("responseDescription");
            responseDetail = (string)element.Element("responseDetail");
            pageNum = (int)element.Descendants("pageNum").FirstOrDefault();
            pageSize = (int)element.Descendants("pageSize").FirstOrDefault();
            totalRecords = (int)element.Descendants("totalRecords").FirstOrDefault();
        }
    }
    public class DetailResponse
    {
        public string policyNumber { get; set; }
        public string premiumChangeAmt { get; set; }
        public string writtenAmt { get; set; }
        public string policyStatusDesc { get; set; }
        public string insuredOrPrincipal { get; set; }                

        public DetailResponse() { }
        public DetailResponse(XElement element)
        {
            XElement xPolicySummaryInfo = element.Descendants("policySummaryInfo").FirstOrDefault();

            policyNumber = (string)xPolicySummaryInfo.Element("PolicyNumber");
            premiumChangeAmt = (string)xPolicySummaryInfo.Element("PremiumChangeAmt");
            writtenAmt = (string)xPolicySummaryInfo.Element("WrittenAmt");
            policyStatusDesc = (string)xPolicySummaryInfo.Element("PolicyStatusDesc");
            insuredOrPrincipal = (string)xPolicySummaryInfo.Descendants("InsuredOrPrincipal").FirstOrDefault();
        }
    }
}


1 commentaires

Merci pour ton aide!