2013-02-19 1 views
6

J'ai un fichier xml que j'ai besoin de mettre à jour chaque fois selon les exigences du nouveau client. la plupart du temps xml n'est pas correct en raison de la mise à jour manuelle du fichier xml. Je pense à écrire un programme (web/windows) où une validation correcte est fournie. et basé sur l'entrée de l'interface utilisateur, je vais créer un fichier XML. ci-dessous est mon exemple de fichier XML.générer des fichiers xml basés sur mes classes C#

<community> 
    <author>xxx xxx</author> 
    <communityid>000</communityid> 
    <name>name of the community</name> 

<addresses> 
     <registeredaddress> 
      <addressline1>xxx</addressline1> 
      <addressline2>xxx</addressline2> 
      <addressline3>xxx</addressline3> 
      <city>xxx</city> 
      <county>xx</county> 
      <postcode>0000-000</postcode> 
      <country>xxx</country> 
     </registeredaddress> 
     <tradingaddress> 
      <addressline1>xxx</addressline1> 
      <addressline2>xxx</addressline2> 
      <addressline3>xxx</addressline3> 
      <city>xxx</city> 
      <county>xx</county> 
      <postcode>0000-000</postcode> 
      <country>xxx</country> 
     </tradingaddress> 
     </addresses> 


<community> 

Quelqu'un peut-il m'aider quelle sera la meilleure approche pour cela?

+1

De quel type de validation parlez-vous? –

+0

comme pour l'expression rationnelle du champ code postal – Prashant

+0

@Prashant est-il important que les balises xml soient en minuscules? –

Répondre

11

Créer suivre des cours pour stocker vos données et valider:

public class Community 
{ 
    public string Author { get; set; } 
    public int CommunityId { get; set; } 
    public string Name { get; set; } 
    [XmlArray] 
    [XmlArrayItem(typeof(RegisteredAddress))] 
    [XmlArrayItem(typeof(TradingAddress))] 
    public List<Address> Addresses { get; set; } 
} 

public class Address 
{ 
    private string _postCode; 

    public string AddressLine1 { get; set; } 
    public string AddressLine2 { get; set; } 
    public string AddressLine3 { get; set; } 
    public string City { get; set; } 
    public string Country { get; set; } 

    public string PostCode 
    { 
     get { return _postCode; } 
     set { 
      // validate post code e.g. with RegEx 
      _postCode = value; 
     } 
    } 
} 

public class RegisteredAddress : Address { } 
public class TradingAddress : Address { } 

Et sérialisation cette instance de classe communautaire à xml:

Community community = new Community { 
    Author = "xxx xxx", 
    CommunityId = 0, 
    Name = "name of community", 
    Addresses = new List<Address> { 
     new RegisteredAddress { 
      AddressLine1 = "xxx", 
      AddressLine2 = "xxx", 
      AddressLine3 = "xxx", 
      City = "xx", 
      Country = "xxxx", 
      PostCode = "0000-00" 
     }, 
     new TradingAddress { 
      AddressLine1 = "zz", 
      AddressLine2 = "xxx" 
     } 
    } 
}; 

XmlSerializer serializer = new XmlSerializer(typeof(Community)); 
serializer.Serialize(File.Create("file.xml"), community); 

Je pense un peu googler vous aidera à comprendre comment désérialiser l'objet communauté à partir du fichier.

+0

Les balises xml dans xml sont les mêmes que dans les fichiers cs. comment puis-je faire à un petit cas comme dans mon fichier xml d'origine. – Prashant

+0

merci pour votre soln rapide. – Prashant

+1

@Prashant utilise les attributs 'XmlElement'. Comme ceci '[XmlElement (" name ")] public string Nom {get; ensemble; } 'vous aurez également besoin de l'attribut' XmlRoot' pour la classe de communauté. –

Questions connexes