csharp 从XML反序列化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 从XML反序列化相关的知识,希望对你有一定的参考价值。
private static void DeserializeFromXML(string soapResult)
{
//XDocument xDoc = XDocument.Parse(soapResult);
XDocument xDoc = XDocument.Parse(@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">
<soapenv:Body>
<RespuestaAtex xmlns=""http://webservices.atex.consulta.vehiculos.servicios.trafico.es"" >
<idUsuario>11110101C</idUsuario>
<idOrganismoResponsable>11110101C</idOrganismoResponsable>
<idResponsable>11110101C</idResponsable>
<version>4</version>
<CriteriosConsultaVehiculo >
<matricula>0149HWC</matricula>
</CriteriosConsultaVehiculo>
<resultado>OK</resultado>
<respuesta><![CDATA[<?xml version=""1.0"" encoding=""ISO-8859-1""?><vehiculo><datosGenerales><descripcionVehiculo><bastidor>WAUZZZ4F49N056245</bastidor><marca><codigo>00143</codigo><descripcion>AUDI</descripcion></marca><modelo>A6</modelo><nive/><paisProcedencia/><servicio><codigo>B00</codigo><descripcion>PART - SIN ESPECIFICAR</descripcion></servicio><servicioComplementario/><tipoIndustria><codigo/><descripcion>NO DISPONIBLE</descripcion></tipoIndustria><tipoVehiculo><codigo>40</codigo><descripcion>TURISMO</descripcion></tipoVehiculo></descripcionVehiculo><domicilioVehiculo><calle>CLL CONRADO DEL CAMPO 101</calle><codPostal>03204</codPostal><municipio>ELCHE</municipio><provincia><codigo>A</codigo><descripcion>ALICANTE</descripcion></provincia><pueblo/></domicilioVehiculo><domicilioVehiculoIne><provincia/></domicilioVehiculoIne><fechasControl><fechaItv>2016 - 03 - 05T00: 00:00 + 01:00</fechaItv><fechaMatriculacion>2014 - 03 - 07T00: 00:00 + 01:00</fechaMatriculacion><fechaPrimeraMatriculacion>2009 - 04 - 28T00: 00:00 + 02:00</fechaPrimeraMatriculacion></fechasControl><indicadores><bajaDefinitiva/><bajaTemporal/><cargaEEFF/><embargo/><excesoPesoDimension/><importacion/><incidencias>S</incidencias><limitacionDisposicion/><posesion/><precinto/><puertoFranco/><reformas>N</reformas><renting>N</renting><subasta>N</subasta><sustraccion/><tutela/></indicadores><matriculacion><fechaMatriculacion>2014 - 03 - 07T00: 00:00 + 01:00</fechaMatriculacion><jefatura><codigo>A</codigo><descripcion>ALICANTE</descripcion></jefatura><matricula>0149HWC</matricula><sucursal><codigo>0</codigo><descripcion/></sucursal></matriculacion><servicioAutonomo/><titular><datosPersona><identificacionPFisica><indicadorDevPF>false</indicadorDevPF></identificacionPFisica><identificacionPJuridica><cif>B54083142</cif><indicadorDevPJ>false</indicadorDevPJ><razonSocial>PROYECTO FUTURO TRESCIENTOS SL</razonSocial></identificacionPJuridica><personaFisica><indicadorDevPF>false</indicadorDevPF></personaFisica><personaJuridica><cif>B54083142</cif><indicadorDevPJ>false</indicadorDevPJ><razonSocial>PROYECTO FUTURO TRESCIENTOS SL</razonSocial></personaJuridica></datosPersona><domicilio><calle>CL CONRADO DEL CAMPO 101</calle><codPostal>03204</codPostal><municipio>ELCHE</municipio><provincia><codigo>A</codigo><descripcion>ALICANTE</descripcion></provincia><pueblo/></domicilio><domicilioIne><provincia/></domicilioIne></titular><requisitoria/></datosGenerales><datosTecnicos><carroceria/><catHomologacion/><color><codigo/><descripcion>NO DISPONIBLE</descripcion></color><combustibleEmisiones><categoriaElectrica/><codigoEco/><codos>0.0</codos><ecoInnovacion/><nivelEmisiones/><propulsion><codigo>1</codigo><descripcion>DIESEL</descripcion></propulsion><reduccionEco/><tipoAlimentacion><codigo/><descripcion/></tipoAlimentacion></combustibleEmisiones><distancias/><documentos><periodoValidezTarjeta>0</periodoValidezTarjeta><periodoValidezTarjeta15>15</periodoValidezTarjeta15><periodoValidezTarjetaNoValida>2</periodoValidezTarjetaNoValida><periodoValidezTarjetaValida>1</periodoValidezTarjetaValida></documentos><fabricante/><masas><masaMaxTecnica>0</masaMaxTecnica><masaServicio>0</masaServicio><pesoMaximo>2365</pesoMaximo><tara>1735</tara></masas><numHomologacion/><plazas><mixtas>000</mixtas><normales>5</normales><numPlazasPie>0</numPlazasPie></plazas><potencias><cilindrada>2698.0</cilindrada><potenciaFiscal>18.74</potenciaFiscal><potenciaNetaMax>0.0</potenciaNetaMax><relPotenciaPeso>0.0</relPotenciaPeso></potencias><procedencia><codigo>3</codigo><descripcion>IMPORT.CEE</descripcion></procedencia><tipoItv/><variante/><version/><datosTarjetaItv/></datosTecnicos><datosResponsables/><datosTramites><listaRematriculaciones/><matriculacionTemporal><anotacion/><fecha> 2009 - 04 - 28T00: 00:00 + 02:00 </fecha><matriculaAnterior/></matriculacionTemporal></datosTramites><datosAdministrativos><listaAvisos/><listaDenegatorias/></datosAdministrativos><datosITVReformas><listaItvs><itv><anotacion>0</anotacion><cuentaHoras>0</cuentaHoras><estacion/><fechaCaducidad> 2016 - 03 - 05T00: 00:00 + 01:00</fechaCaducidad><kilometraje>0</kilometraje><motivoItv><codigo>M</codigo><descripcion>PREVIA MATRIC.</descripcion></motivoItv><provincia><codigo>A</codigo><descripcion>ALICANTE</descripcion></provincia><resultadoItv><codigo>F</codigo><descripcion>FAVORABLE</descripcion></resultadoItv></itv></listaItvs></datosITVReformas><datosSeguros><listaSeguros/></datosSeguros><listaVehiculos/><datosSeguridad><listaElementosSeguridad/><ncap><anioEnsayo>2004</anioEnsayo><adultos>5.0</adultos><menores>4.0</menores><peatones>1.0</peatones><seguridad>0.0</seguridad><global>0.0</global></ncap></datosSeguridad><datosLibroTaller><listaDetalleIncidencias/></datosLibroTaller></vehiculo>]]></respuesta>
</RespuestaAtex>
</soapenv:Body>
</soapenv:Envelope>");
var xcdata = xDoc.DescendantNodes().OfType<XCData>().FirstOrDefault();
string xmlVeh = xcdata.ToString().Replace("<![CDATA[", "").Replace("]]>", "");
Serializer ser = new Serializer();
PolVehiculoATEX vehAtex = ser.Deserialize<PolVehiculoATEX>(xmlVeh);
}
public class Serializer
{
/// <summary>
/// populate a class with xml data
/// </summary>
/// <typeparam name="T">Object Type</typeparam>
/// <param name="input">xml data</param>
/// <returns>Object Type</returns>
public T Deserialize<T>(string input) where T : class
{
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)ser.Deserialize(sr);
}
}
/// <summary>
/// convert object to xml string
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="ObjectToSerialize"></param>
/// <returns></returns>
public string Serialize<T>(T ObjectToSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(ObjectToSerialize.GetType());
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, ObjectToSerialize);
return textWriter.ToString();
}
}
}
以上是关于csharp 从XML反序列化的主要内容,如果未能解决你的问题,请参考以下文章