Как обессолить xml и передать его через службу wcf в c# - PullRequest
1 голос
/ 21 марта 2020

У меня есть xml, как показано ниже, и я хочу передать его в качестве ответа от службы wcf. Что я и сделал, я использовал Visual Studio для генерации c# классов из xml, а затем опустошил xml с классами, сгенерированными из VS.Data, поступает в Soap пользовательский интерфейс из службы WCF, но когда я нажимаю подтвердить в soap пользовательском интерфейсе, выдается ошибка

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Почему вы не используете два свойства вместо одного?

   public partial class getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITES
    {

        private object[] itemNamesField;
        private object[] itemNodessField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("SITE_NAME", typeof(string))]
        public object[] ItemNames
        {
            get
            {
                return this.itemNamesField;
            }
            set
            {
                this.itemNamesField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("SITE_NODES", typeof(getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITESSITE_NODES))]
        public object[] ItemNodes
        {
            get
            {
                return this.itemNodesField;
            }
            set
            {
                this.itemNodesField = value;
            }
        }
    }
1 голос
/ 22 марта 2020

Ниже приведен код для десериализации xml. Linq намного быстрее десериализуется, чем приведенный ниже код. Таким образом, вы должны решить, лучше ли использовать ваш код или код ниже. Обычно я рекомендую, если у вас есть схема (и классы) и вы пытаетесь получить все данные, лучше использовать сериализацию. Вы помещаете результаты в таблицу данных, которую я тогда рекомендую xml linq. Я просто хочу, поэтому, почему я предложил удалить базовый класс.

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(getCustomerSites));
            getCustomerSites sites = (getCustomerSites)serializer.Deserialize(reader);
        }
    }
    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class getCustomerSites //: ResponseBase
    {

        private getCustomerSitesPARTY_SITE_NODES[] pARTY_SITE_NODESField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("PARTY_SITE_NODES")]
        public getCustomerSitesPARTY_SITE_NODES[] PARTY_SITE_NODES
        {
            get
            {
                return this.pARTY_SITE_NODESField;
            }
            set
            {
                this.pARTY_SITE_NODESField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class getCustomerSitesPARTY_SITE_NODES
    {

        private uint cBCM_PARTY_IDField;

        private string cBCM_PARTY_NAMEField;

        private getCustomerSitesPARTY_SITE_NODESPARTY_SERVICES[] pARTY_SERVICESField;

        /// <remarks/>
        public uint CBCM_PARTY_ID
        {
            get
            {
                return this.cBCM_PARTY_IDField;
            }
            set
            {
                this.cBCM_PARTY_IDField = value;
            }
        }

        /// <remarks/>
        public string CBCM_PARTY_NAME
        {
            get
            {
                return this.cBCM_PARTY_NAMEField;
            }
            set
            {
                this.cBCM_PARTY_NAMEField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("PARTY_SERVICES")]
        public getCustomerSitesPARTY_SITE_NODESPARTY_SERVICES[] PARTY_SERVICES
        {
            get
            {
                return this.pARTY_SERVICESField;
            }
            set
            {
                this.pARTY_SERVICESField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class getCustomerSitesPARTY_SITE_NODESPARTY_SERVICES
    {

        private string sERVICE_NAMEField;

        private getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITES sERVICE_SITESField;

        /// <remarks/>
        public string SERVICE_NAME
        {
            get
            {
                return this.sERVICE_NAMEField;
            }
            set
            {
                this.sERVICE_NAMEField = value;
            }
        }

        /// <remarks/>
        public getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITES SERVICE_SITES
        {
            get
            {
                return this.sERVICE_SITESField;
            }
            set
            {
                this.sERVICE_SITESField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    //[KnownType(typeof(getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITESSITE_NODES))]
    public partial class getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITES
    {

        private object[] itemsField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("SITE_NAME", typeof(string))]
        [System.Xml.Serialization.XmlElementAttribute("SITE_NODES", typeof(getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITESSITE_NODES))]
        public object[] Items
        {
            get
            {
                return this.itemsField;
            }
            set
            {
                this.itemsField = value;
            }
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class getCustomerSitesPARTY_SITE_NODESPARTY_SERVICESSERVICE_SITESSITE_NODES
    {

        private string[] nODE_NAMEField;

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("NODE_NAME")]
        public string[] NODE_NAME
        {
            get
            {
                return this.nODE_NAMEField;
            }
            set
            {
                this.nODE_NAMEField = value;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...