2017-10-19 15 views
0

Je dois créer un objet selon mon xml, cet objet sera utilisé comme entrée pour un service web en C#.Conversion XML vers objet pour le type de champ

Si j'ai ce xml,

<v1:Field type="Note"> 
    <v1:name>Buyer’s Name should be as per Passport/Trade License. For existing Emaar property owners, please provide details as per existing profile.</v1:name> 
    <v1:category>MESSAGE</v1:category> 
    <v1:mandatory>N</v1:mandatory> 
    <v1:alias>DESCLAIMER_FYI</v1:alias> 
    <v1:value>Buyer’s Name should be as per Passport/Trade License. For existing Emaar property owners, please provide details as per existing profile.</v1:value> 
</v1:Field> 

je peux faire la classe sur cette base, par exemple

public class Field 
{ 
    public string name{ set; get; } 
    public string category { set; get; } 
    public string mandatory { set; get; } 
    public string alias { set; get; } 
    public string value { set; get; } 
} 

Quel attribut sera utilisé pour prendre cette valeur < v1: Champ type = "Note">?

Si je mets le type en tant que propriété publique, il viendra comme tag dans le nom de xml, la catégorie arrive, mais je veux le faire avec Field tag, qui est appelé attribut. Que puis-je utiliser en C# qui agira comme un attribut venant avec une balise Field.

Répondre

1
public class SomeIntInfo 
{ 
    [XmlAttribute] 
    public int Value { get; set; } 
} 
0

Essayez xml linq. Je code de test ci-dessous:

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 root = doc.Root; 
      XNamespace ns = root.GetNamespaceOfPrefix("v1"); 

      var results = root.Descendants(ns + "Field").Select(x => new Field() { 
       type = (string)x.Attribute("type"), 
       name = (string)x.Element(ns + "name"), 
       category = (string)x.Element(ns + "category"), 
       mandatory = (string)x.Element(ns + "mandatory"), 
       alias = (string)x.Element(ns + "alias"), 
       value = (string)x.Element(ns + "value"), 
      }).FirstOrDefault(); 
     } 
    } 
    public class Field 
    { 
     public string type { get; set; } 
     public string name { set; get; } 
     public string category { set; get; } 
     public string mandatory { set; get; } 
     public string alias { set; get; } 
     public string value { set; get; } 
    } 
}