Generate classes from XML by:
- Copying the available XML to clipboard
- In Visual Studio select in menu Edit
- Paste special > Paste as XML classes
- Cleanup classes, adjust types + Add Attributes (XmlRoot, XmlType, XmlElement, XmlArray, XmlAttribute)
using System;
using System.ComponentModel;
using System.Xml.Serialization;
namespace Models
{
[Serializable]
[DesignerCategory("code")]
[XmlType(AnonymousType = true)]
//[XmlRoot("NewGroupName")] // xml root element
//[XmlType("NewTypeName")] // xml schema
public class MessagesMessage
{
[XmlElement("MessageStandard")]
public string MessageStandard { get; set; }
public byte MessageType { get; set; }
public string MessageDate { get; set; }
public string IsTestMessage { get; set; }
public string OrderNumberBuyer { get; set; }
public string IsNormalOrder { get; set; }
public string IsCrossdock { get; set; }
public string IsAcknowledgementRequested { get; set; }
public ulong BuyerGLN { get; set; }
public string SupplierGLN { get; set; }
public ulong DeliveryPartyGLN { get; set; }
public string ShipFromPartyGLN { get; set; }
public string UltimateConsigneeGLN { get; set; }
public ulong InvoiceeGLN { get; set; }
public string IsDutyFree { get; set; }
public string IsBackhauling { get; set; }
public ulong MessageReference { get; set; }
[XmlElement("Article")]
public MessagesMessageArticle[] Article { get; set; }
}
public class XmlHelper
{
public static T ParseXML<T>(string xml) where T : class
{
using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml.Trim())))
{
var reader = XmlReader.Create(stream, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Document });
return new XmlSerializer(typeof(T)).Deserialize(reader) as T;
}
}
public static void Example()
{
var message = TransusApi.ParseXML<MessagesMessage>(ExampleOrderMessage());
}
}
}
using System.Xml;
using System.Xml.Serialization;
public static T ParseXML<T>(string xml) where T : class
{
try
{
if (string.IsNullOrWhiteSpace(xml))
return null;
using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml.Trim())))
{
var reader = XmlReader.Create(stream, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Document });
return new XmlSerializer(typeof(T)).Deserialize(reader) as T;
}
}
catch (InvalidOperationException)
{
return null;
}
}
public static string SerializeXML<T>(T obj) where T : class
{
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
{
new XmlSerializer(typeof(T)).Serialize(stream, obj);
stream.Position = 0;
return reader.ReadToEnd();
}
}284000cookie-checkC# Typed Xml Parsing