J'ai un fichier XML, je veux insérer cela dans un jeu de données.
Le format du fichier XML est comme ci-dessous: maintenant, je veux insérer cela dans une table de données comme ci-dessous: p> peut quelqu'un aidez-moi à y parvenir. p> p>
5 Réponses :
Comment lire des données XML dans un jeu de données à l'aide de Visual C # .NET contient quelques détails. Fondamentalement, vous pouvez utiliser le surchargé Méthode de jeu de données ReadXML A > Pour obtenir les données dans un jeu de données. Vos données XML seront dans le premier jeu de données. P>
Il y a aussi un Méthode DataTable.ReadxML a>. p>
Êtes-vous sûr que le XML fourni est d'un format approprié pour READXML?
@Coline, non, je ne suis pas sûr, surtout avec les modifications à la question. Il sera facile de savoir en exécutant le code. Si cette approche fonctionne, cela évitera de devoir créer les colonnes et l'instruction SELECT. Si la source de données peut être adaptée à l'approche Readexml, cela permettra d'économiser beaucoup d'efforts.
Je créerais d'abord un Vous pouvez utiliser une requête SELECT pour créer un objet qui représente chaque ligne , puis utilisez l'approche standard pour créer des datarswers pour chaque élément ... p> datatable code> avec les colonnes que vous avez besoin, puis le peupler via LINQ-TO-XML.
class Quest
{
public string Answer1;
public string Answer2;
public string Answer3;
public string Answer4;
}
public static void Main()
{
var doc = XDocument.Load("filename.xml");
var rows = doc.Descendants("QuestId").Select(el => new Quest
{
Answer1 = el.Element("Answer1").Value,
Answer2 = el.Element("Answer2").Value,
Answer3 = el.Element("Answer3").Value,
Answer4 = el.Element("Answer4").Value,
});
// iterate over the rows and add to DataTable ...
}
Mais je me demande pourquoi je reçois le type attendu code> après
nouveau () code>
@ user1590636 Parce que ce code ne compile pas. J'ai édité les informations requises dans la réponse. Une autre légère erreur était que la surcharge xdocument.load (YourXMLString) code> attend que la chaîne soit un URI d'un fichier et non littéral XML - modifié le nom de l'argument sur" FileName.xml ". Lorsque vous devez charger directement à partir d'une chaîne, utilisez une mémoire Mémoire.
Et si vous ne connaissez pas le nom des éléments?
DataSet ds = new DataSet(); ds.ReadXml(fileNamePath);
Êtes-vous sûr que le XML fourni est d'un format approprié pour READXML?
Vous pouvez utiliser ce code (recommandé) ceci est un autre moyen mais premier ex. est recommandé p>
Et où est le XML que vous allez insérer sur le jeu de données? Veuillez lire la question en premier.
Peut-être que cela pourrait être un petit article plus ancien. Mais doit des réponses ci-dessus ne m'aidez-nous pas comme dont j'ai besoin. Ensuite, j'ai écrit un petit extrait pour ça.
Ceci accepte tout XML qui aime au moins 3 niveaux (comme cet échantillon): p> ceci résolve mon problème p> p> p>
Veuillez formater correctement les données que vous devez insérer dans DataTable. Il est difficile de comprendre de cette façon.
Y a-t-il une raison spécifique dont vous avez besoin d'un
datatable code>? Vous pouvez probablement définir une classe sérialisable et désérialiser cela dans un objet aussi facile, et il serait probablement plus utile de cette forme.
@Joe Enos Ouais, comme @Coline suggère, vous pouvez utiliser LINQ-TO-XML.
@Je: Non, il n'y a pas de spécifique, je veux simplement stocker le fichier XML au format tabulaire .. comme exemple ci-dessus.