2010-03-30 8 views
2

je dois générer XML dans le format ci-dessousClasses de sérialisation en C#. XML imbriqué

<objects> 
    <items> 
     <item ="delete"> 
      <searchfields> 
      <searchfield name="itemname" value="itemValue" /> 
      </searchfields> 
     </item> 
    </items> 
</objects> 

J'ai donc généré le fichier CS en utilisant xsd.exe en convertissant le XML ci-dessus pour XSD.

xsd.exe -c -l:c# -n:XmlSerializationDeleteObject DeleteObject.xsd 

Le fichier CS généré contient 4 classes.

Ma question est que je dois construire le XML dans le format mentionné ci-dessus en utilisant la classe qui est générée. Je suis en mesure de sérialiser les fichiers de classe un par un qui retire une étiquette à la fois, mais je suis incapable de la construire de la manière que j'ai mentionné ci-dessus.

S'il vous plaît aider

Regardas, Jebli

+0

Je suis un peu clair sur l'endroit où le problème est (à savoir où vous êtes coincé) et tout à fait ce que vous entendez par « un par un »/« incapable de construit » etc. Pouvez-vous clarifier ce que vous voulez dire? –

Répondre

4

Je pense que cela devrait faire l'envie vous voulez. Je dois dire que je n'ai pas utilisé XSD pour créer mes cours - je les ai créés à partir de zéro. Cela créera alors le fichier XML actuel - qui est presque le même que votre exemple. La seule différence étant que je pense que vous aurez besoin d'avoir un attribut dans l'élément d'objet pour maintenir la "delete"

private void button1_Click(object sender, EventArgs e) 
     { 
      //Create the Serialize object to save the class to an XML file 
      XmlSerializer serializer = new XmlSerializer(typeof(ObjectTest)); 
      FileStream fs = new FileStream(@"C:\Objects.xml", FileMode.Create); 

      try 
      { 


       //Create new instances of each class to store the data 
       ObjectTest testing = new ObjectTest(); 
       Items newItems = new Items(); 
       Item newItem = new Item(); 
       SearchFields newSearch = new SearchFields(); 

       //Assign SearchField data 
       newSearch.searchName = "itemName"; 
       newSearch.searchValue = "itemValue"; 

       //Assign the item type 
       newItem.itemType = "delete"; 

       //Create a new array of SearchField objects 
       SearchFields[] testSearch = { newSearch }; 

       //Add the SearchField array to the Item class 
       newItem.searchfields = testSearch; 

       //Add the single Item class to the Items class 
       newItems.item = newItem; 

       //Create a new array of Items objects 
       Items[] testItems = { newItems }; 

       //Add the Items array to the ObjectTest class 
       testing.items = testItems; 

       //Serialize the object 
       serializer.Serialize(fs, testing); 


      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error: " + ex.ToString()); 
      } 
      finally 
      { 
       //close the objects 
       fs.Close(); 
       serializer = null; 

      } 



     } 

Laissez-moi savoir comment vous allez. J'espère que c'est ce que vous cherchez.

grâce

Barry

+0

Salut merci pour la réponse .il m'a aidé. :) – Jebli