2008-10-30 7 views
2

En utilisant VB.net (.net 2.0) J'ai une chaîne dans ce format: ainsiLa meilleure façon d'obtenir une chaîne délimitée par des virgules au format xml?

record1_field1,record1_field2,record2_field3,record2_field1,record2_field2, 

etc ...

Je me demande quel est le meilleur (le plus facile) est d'obtenir ceci dans un xml?

je peux penser à 2 façons:

Méthode 1: - utilisation fractionnée pour obtenir les éléments d'un tableau - boucle à travers tableau et construire une chaîne XML à l'aide concaténation

Méthode 2: - utiliser Fractionner pour obtenir les éléments d'un tableau - boucles par réseau pour construire une datatable - WriteXml utilisation au format XML de sortie datatable

les premiers sons assez simple mais, il faudrait plus logique de construire e Chaîne

La seconde semble plus lisse et plus facile à comprendre.

Existe-t-il d'autres moyens de le faire?

+0

Comment savez-vous où se termine l'enregistrement1 et enregistrez deux présences? Y aura-t-il toujours trois champs ou y a-t-il des sauts de ligne que nous ne pouvons pas voir? –

+0

Et est-ce que vous vous souciez si les champs sont traités comme des éléments ou des attributs? –

+0

Il y aura toujours un nombre défini de champs pour chaque enregistrement afin que nous puissions dire où un enregistrement se termine et un autre commence. Il n'y a pas d'exigence stricte quant à savoir si un champ devrait être un élément ou un attribut, mais je prévois de faire des éléments. – dtc

Répondre

3

je ferais quelque chose comme ceci:

 

XmlDocument doc = new XmlDocuent(); 

string[] data = csv.split(','); 

XmlNode = doc.CreateElement("root"); 
foreach(string str in data) 
{ 
    XmlNode node = doc.CreateElement("data"); 
    node.innerText = str; 
    root.AppendChild(node); 
} 
Console.WriteLine(doc.InnerXML); 
 

doit retourner quelque chose comme ceci:

 

<root> 
    <data>field 1</data> 
    <data>field 2</data> 
    <data>field 3</data> 
</root> 
 

vous devez boucles de nid/tokenize un peu différent pour les données imbriquées ...

+0

regardez plus attentivement son échantillon: il y a un peu de nidification qui ne sera pas pris en compte. –

+0

J'ai choisi cela comme réponse parce que cela me donne une bonne idée de la façon de commencer. La réponse de Joe a également aidé, mais celle-ci est plus complète. Et merci à Joel d'avoir mentionné d'autres choses à considérer. – dtc

1

Au lieu de faire la concaténation de chaîne, vous pouvez probablement créer un XmlDocument et le farcir avec le XmlElement approprié et XmlAttribute objets de votre chaîne ... Ensuite, écrivez l'objet XmlDocument ...

Questions connexes