it-swarm.com.de

Konvertieren Sie XML in DataTable

Ich habe eine XML-Datei, die ich in eine Datentabelle einfügen will .. Das Format der XML-Datei sieht wie folgt aus

<userid ID="37729">
  <TestId ID="84" TimeRemaining="60" />
  <QuestId ID="1">
    <Answer1>
    </Answer1>
    <Answer2>B</Answer2>
    <Answer3>
    </Answer3>
    <Answer4>
    </Answer4>
  </QuestId>
</userid>

Nun möchte ich das in eine Datentabelle wie folgt einfügen:

Question Id     Answer1      Answer2        Answer3        Answer4
1                 A                                         D

2                             B              C     

3                                            C                     

Kann mir jemand helfen, dies zu erreichen.

10
Vijjendra

Ich würde zuerst eine DataTable mit den von Ihnen benötigten Spalten erstellen und diese dann über Linq-to-XML auffüllen.

Sie können eine Select-Abfrage verwenden, um ein Objekt zu erstellen, das jede Zeile darstellt, und dann die Standardmethode zum Erstellen von DataRows für jedes Element verwenden.

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 ...

}
14
ColinE
DataSet ds = new DataSet();
ds.ReadXml(fileNamePath);
12
ShaneBlake

So lesen Sie XML-Daten mithilfe von Visual C # in ein DataSet enthält einige Details. Grundsätzlich können Sie die überladene DataSet-Methode ReadXml verwenden, um die Daten in ein DataSet zu übernehmen. Ihre XML-Daten befinden sich dort in der ersten DataTable.

Es gibt auch eine DataTable.ReadXml-Methode .

2
DOK

Sie können diesen Code verwenden (empfohlen)

 MemoryStream objMS = new MemoryStream();
 DataTable oDT = new DataTable();//Your DataTable which you want to convert
 oDT.WriteXml(objMS);
 objMS.Position = 0;
 XPathDocument result = new XPathDocument(objMS);

Dies ist ein anderer Weg, aber zuerst ex. ist empfohlen 

StringWriter objSW = new StringWriter();
DataTable oDt = new DataTable();//Your DataTable which you want to convert
oDt.WriteXml(objSW);
string result = objSW.ToString();
1
yeasir007